変数にはプロパティがありますか?
明白な答えは NO です。プロパティを変数に割り当てようとすると、エラーが発生するはずです。右?
私が次のようなことをした場合:
var someVariable = 'Cat';
someVariable.eyes = 'two'; //Gives no error!
alert(someVariable.eyes); // alerts 'undefined' instead of giving an error!
変数にはプロパティがありますか?
明白な答えは NO です。プロパティを変数に割り当てようとすると、エラーが発生するはずです。右?
私が次のようなことをした場合:
var someVariable = 'Cat';
someVariable.eyes = 'two'; //Gives no error!
alert(someVariable.eyes); // alerts 'undefined' instead of giving an error!
変数にはプロパティがありませんが、値にはプロパティがあります。(とにかく、値がオブジェクトの場合。) この場合、eyes
現在 によって参照されている文字列のプロパティを設定しようとしていますsomeVariable
。
ただし、この場合は機能しません。プリミティブ値にはプロパティがないため、JS はプリミティブ文字列値をオブジェクトに変換し、そのオブジェクトにプロパティを設定します。これはほとんどすぐに黙って破棄されます。最終結果: プリミティブ文字列は変更されません。
「変数」は実際には存在せず (厳密にスコープの定義内を除く)、オブジェクトのみです。また、デフォルトでは、文字列オブジェクトに任意のプロパティを割り当てることはできません。