最近、js
からの質問に遭遇しました。質問は次のようなものです。 var str = 'abc' ;
typeof (str )
;
最初、返される値は String 型の値だと思いました。しかし、結果は Number になり、混乱してしまいます。
私が理解している考え方は、最初に str を分割する、つまり str = str 1; これは単なる文字列の結合ではないでしょうか?返されるのは str です。
しかし、str を出力すると、NaN 型になります。 typeof(NaN)
は Number 型です。
つまり、console.log(str)
console.log(str = str 1)
は等価ではありません。
だからですか? ?
高度な JavaScript プログラミングで書かれています
++
和--
是递增递减的一元操作符,只能操作一个数据,和加性操作符+
是不一样的,他首先会把操作数转换为Number类型,然后进行加一或减一操作。所以
str = str+1
不等于str++
str++を使用すると、jsは暗黙的にstrの文字列型を数値型に変換しているためです
console.log(str++) ++ は str を数値に変換しようとしますが、自動変換が失敗すると NaN になります
。console.log(str = str+1) +このとき文字列を繋ぎ合わせてみるとabc1になります
js には、a++ と a=a+1 が同等であることを保証するものは何もありません。
++
只有<number>
重载,+
有<string, string>
和<number, number>
リロードします。たとえ動作が考慮されていないとしても、型はもはや同等ではありません。他の言語も存在する可能性がありますので、JS と混同しないでください。
まず第一に、あなたの理解は間違っています。str++ は str+=1 と完全に同等ではありません。ここでは自己インクリメントとして理解する必要がありますが、自己インクリメントは数値にのみ適用されるため、str++ は最初に暗黙的な型変換を実行します。 str の値は 'abc' であり、変換後の typeof NaN の戻り値は Number
になります。