5

私の理解では、変数は値を指し、同じ変数を複数の値に再割り当てできますが、値自体は不変です。JavaScript を学んでいると、「リテラル」という概念がよく出てくるようですが、リテラルを区別する明確な説明は見つかりませんでした。実際、ある著者はそれらを同一視しています。

リテラルと値をどのように比較しますか? 簡単な例を挙げてください。

興味のある人には、この説明がとても役に立ちました。私が今見ているように、リテラルは常に評価後に結果が返されますが、値はより複雑 (式など) になり、それ自体とは異なるものに評価される可能性があります。

4

4 に答える 4

0

「単純な」答えは

変数の値がプリミティブで、リテラルがプリミティブを表す場合、variable === literal

var x = 1;
x === 1;             // true

変数がプリミティブでvariable !== literalない場合、たとえそれらが同等であっても

var x = new Number(1);
x === 1;             // false
x === new Number(1); // false
// or
var a = [1, 2];
a === [1, 2];        // false

ただし、メモリ内の同じ場所を指している限り、非プリミティブ変数と非プリミティブ変数を比較する===と戻ります。true

var b = a;           // `a` as above
a === b;             // true

の詳細について===は、MDN ページの比較演算子と、厳密等価比較アルゴリズムの ES5 仕様を参照してください。

于 2013-08-17T14:13:17.363 に答える