Javascript中的未捕获参考错误&未定义

时间:2015-09-15 12:45:56

标签: javascript

考虑:

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而不是 对象属性案例 获得 错误 >

enter image description here

3 个答案:

答案 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;

预期的行为是:

  • 如果myObj(基本引用)不存在,则抛出ReferenceError。
  • 如果基础存在,但属性不存在,则返回 undefined

答案 2 :(得分:0)

这可能是因为您可以引用一个不存在的成员来将其分配给现有对象,例如。

var myObject = {firstMember: "test1"};
myObject.secondMember = "test2";

赋值左侧的值是有意义的表达式。