为什么在 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
会抛出。
相反,变量在其作用域中静态声明。访问未声明的变量始终是一个错误,这使得抛出ReferenceError
s是合法的。
相关文章:
- 无法获取属性'selectedIndex'的未定义引用或null引用
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- 如何正确引用传递到淘汰中的当前元素的属性.JS
- 如何使用object.assign()从其他对象引用基本对象属性
- 引用Ractive.js中的子属性
- 无法获取属性'字符串'的未定义或null引用IE 11 ASP.NET
- 使用闭包创建原型中引用的私有属性
- SCRIPT5007:无法获取属性'长度'的未定义引用或null引用
- 无法获取属性'setActionableButtonState'的未定义引用或null引用
- 传递引用 jQuery 后无法访问元素属性
- 使用连字符引用对象的属性名称
- 使用 Javascript 编写引用属性数据的 HTML
- 引用属性而不是 getter 和 setter
- AngularJS类中的引用属性(ControllerAs语法)
- 从子对象中的父对象引用属性
- 创建对象时引用属性
- 可以从另一个对象中引用属性的名称吗?
- 高度 CZML 的引用属性
- 将变量传递给原型或在函数中引用属性是更好的做法吗?
- 在实例化期间引用属性