ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript が and - 演算子を使用してこのような予期しない結果を生成するのはなぜですか?

JavaScript が and - 演算子を使用してこのような予期しない結果を生成するのはなぜですか?

DDD
DDDオリジナル
2024-12-17 09:10:25784ブラウズ

Why Does JavaScript Produce Such Unexpected Results with the   and - Operators?

CodeMash 2012 の「ワット」トークでの奇妙な JavaScript の動作

CodeMash 2012 での示唆に富む「ワット」トークでは、一連の JavaScript の奇妙な動作が次のとおりでした。強調表示されました。これらの動作により、JavaScript がバックグラウンドでどのように動作するかについて疑問が生じます。

加算演算子と配列

加算演算子 ( ) を配列で使用すると、次のような特有の課題が生じます。

  • [] []: 予期せぬことに、2 つの空の配列を連結すると空の配列が生成されます。 string.
  • [] {}: 空の配列とオブジェクトを加算すると「[Object]」が得られ、演算子が配列をプリミティブに変換することを示唆しています。
  • {} []: この動作は JavaScript エンジンによって異なります。ビデオでは結果が 0 になるはずだと示唆していますが、一部の環境では "[Object]" が返されます。
  • {} {}: 2 つのオブジェクトを追加すると "Object" が返され、JavaScript がオブジェクトを変換することを示します。

数値から文字列を減算する

演算子が適用される場合異なる型の値の場合、特殊性が生じます:

  • Array(16).join("wat" - 1): この式は「NaNNaNNaNNaNNaNNaN」を生成します。 JavaScript は、"wat" - 1 を NaN に強制変換し、空の文字列と連結して結合引数を形成します。
これらの癖を理解する

これらの動作を理解するには、以下を詳しく理解することが不可欠です。 ECMA-262標準:

  • [] []: 配列は toString() メソッドを使用してプリミティブに変換され、空の配列には空の文字列が返されます。
  • [] {}: オブジェクトも toString() を使用してプリミティブに変換され、結果は "[object
  • {} []: 空のブロック ステートメントには戻り値がないため、配列に対して単項関数が 0 を返すことになります (空の文字列に強制されます)。
  • {} {}: 演算子はオブジェクトを文字列に変換し、結果は "[object Object]".
  • Array(16).join("wat" - 1): 文字列から数値を減算しようとした結果、NaN が発生します。
強制された式ステートメント

特定のコンテキストでは、{} 構文はむしろ式ステートメントとして解釈される場合があります。

これらの奇妙な JavaScript の動作を理解することは、堅牢で予測可能なコードを作成し、スクリプトが意図したとおりに実行されるようにするために重要です。

以上がJavaScript が and - 演算子を使用してこのような予期しない結果を生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。