繁体   English   中英

为什么在 javascript 中引用对象的不存在属性不会返回引用错误?

[英]why referencing non-existent property of an object in javascript doesn't return a reference error?

如果我尝试引用一个不存在的变量,我会在 JavaScript 中得到 ReferenceError。 为什么引用不存在的对象属性会返回“未定义”? 这是一些代码,前提是我在浏览器中编写它:

alert(a);
ReferenceError: a is not defined //error is thrown
alert({}.a)
undefined //no error

这就是语言的工作方式。 它的基于对象的方法非常灵活,您可以在运行时动态地从对象中添加、更新和删除属性。 访问当前不存在的应该产生undefined而不是引发异常。 例如,这允许检查单个表达式中的存在和类型:

if (prop in obj && typeof obj[prop] == "function") obj[prop]();
// can be written shorter:
if (typeof obj[prop] == "function") obj[prop]();

您可以在不使用它的情况下获取该值。 在大多数情况下,使用undefined then 会抛出异常。

相反,变量在其作用域内静态声明。 访问未声明的变量总是一个错误,这使得抛出ReferenceError是合法的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM