考虑:
var myString = new String("Hello world");
alert(myString.noSuchValue); // undefined
alert(myshit); // This results in error, and not the above one
他们两个,即
noSuchValue
上的myString
,myshit
是 未定义 。
但为什么我会为myshit
而不是 对象属性案例 获得 错误 >
答案 0 :(得分:2)
考虑稍微修改一下代码:
var myString = "Hello world";
var noSuchValue = myString.noSuchValue;
alert(noSuchValue);
在此示例中,noSuchValue
是已定义的变量,其值为undefined
。
将此对比:
alert(otherValue);
此处,otherValue
是一个未定义的变量(即尚未使用var
声明的值),没有任何价值。
JavaScript可以处理值等于undefined
的变量,但是当它看到未定义的变量时会引发异常。
答案 1 :(得分:2)
您可以从ECMAScript specs获得正确答案,但我会在以下示例中对其进行总结:
var data= myObj.prop1;
预期的行为是:
答案 2 :(得分:0)
这可能是因为您可以引用一个不存在的成员来将其分配给现有对象,例如。
var myObject = {firstMember: "test1"};
myObject.secondMember = "test2";
赋值左侧的值是有意义的表达式。