ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript がこれらの奇妙な算術演算で予期しない結果を生み出すのはなぜですか?

JavaScript がこれらの奇妙な算術演算で予期しない結果を生み出すのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-24 18:19:14
オリジナル
619 人が閲覧しました

Why Does JavaScript Produce Unexpected Results in These Strange Arithmetic Operations?

「ワット」トークでの不可解な JavaScript の動作

CodeMash 2012 の「ワット」トークでは、JavaScript のいくつかの特異な動作が強調されました。背後で何が起こっているのかを理解するために、それらを調査する価値があります。 scenes.

[] []
空の配列で使用される加算演算子 ( ) は、オペランドをプリミティブに変換して結合します。配列のデフォルトのプリミティブ値は空の文字列であるため、[] [] の結果は空の文字列になります。

[] {}
JavaScript のオブジェクトには toString() があります。呼び出されたときに「[object Object]」を返すメソッド。したがって、[] {} はオブジェクト、具体的には文字列 "[object Object]" になります。

{} []
ステートメントで使用すると、{} が解析されます。空のブロックとして扱われるため、未定義が返されます。演算子は未定義のオペランドを数値に強制し、結果として {} [] は 0 になります (「ワット」の話では NaN であるべきだと述べています)。

{} {}
同様{} [] に変換すると、最初の {} は空のブロックとして解析され、結果は未定義になります。ただし、演​​算子は文字列 "[object Object]" (2 番目の {} の toString() 値) を数値に強制変換できず、結果は NaN.

Array(16).join になります。 ("wat" - 1)
ToNumber() は、文字列から数値を減算するため、"wat" - 1 を NaN に変換します。数値以外の値で。次に、ToPrimitive() は NaN を文字列 "NaN" に変換します。これは、配列要素を結合するときに 16 回繰り返されます。

結論
これらの一見奇妙な動作は、JavaScript のプリミティブ変換ルールに起因しています。配列とオブジェクトに関連付けられた特定のメソッド。これらの基礎となるメカニズムを理解することで、予期しない結果を回避し、JavaScript の能力を最大限に活用することができます。

以上がJavaScript がこれらの奇妙な算術演算で予期しない結果を生み出すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート