为什么在javascript中引用不存在的对象的属性不会返回引用错误?
如果我试图引用一个不存在的variables,我得到JavaScript中的ReferenceError。 为什么引用一个不存在的对象属性返回“undefined”? 这里是一些代码,只要我在浏览器中编写它:
alert(a); ReferenceError: a is not defined //error is thrown alert({}.a) undefined //no error
这就是语言的工作原理。 其基于对象的方法非常灵活,您可以在运行时dynamic地添加,更新和删除对象的属性。 访问一个当前不存在的应该产生undefined
而不是引发exception。 例如,这允许检查是否存在并input单个expression式:
if (prop in obj && typeof obj[prop] == "function") obj[prop](); // can be written shorter: if (typeof obj[prop] == "function") obj[prop]();
你可以在不使用它的情况下得到这个值。 使用undefined
将在大多数情况下抛出。
相反,variables是在其范围内静态声明的。 访问一个未声明的variables总是一个错误,合法的抛出ReferenceError
。