同僚から質問を受けました。私はこの質問に答えることができません。
var x = '9'; // Line no 1
x=='7' // Line no 2
//doing something with x
2行目はエラーを出していません。
別のシナリオ
var x == '7';
ブラウザ:SyntaxError:欠落; ステートメントの前
これは、割り当てが常に単一の「=」によって行われるためです。
質問 :
- 最初のシナリオはどのように実行されますか?
同僚から質問を受けました。私はこの質問に答えることができません。
var x = '9'; // Line no 1
x=='7' // Line no 2
//doing something with x
2行目はエラーを出していません。
別のシナリオ
var x == '7';
ブラウザ:SyntaxError:欠落; ステートメントの前
これは、割り当てが常に単一の「=」によって行われるためです。
質問 :
x == '7'
この行はブール式です。その値は計算され、単純に破棄されます。一部の人々はヨーダ記法を使用することを奨励しています
if(7 == x)
それ以外の
if(x == 7)
誤って入力if(x = 7)
してバグを見つけにくくしないようにするためです。
これ
var x == '7'
一方、は変数宣言であると想定されているため、ここでは==
演算子は不正です。
Javascriptはx=='7'
として見ます(x=='7')
。
基本的にあなたは持っています:
var x = '9'; // Line no 1
false;
//doing something with x
Jsエンジンが評価しfalse
ます。次に、次の命令に進みます。
==は割り当てではなく、ブール式です。
ブラウザは、戻り値が使用されておらず、このビットを実行しないことによって最適化されていることを認識していると思われます。
どのブラウザ(またはインタプリタ)を使用していますか?