javascript - 为什么访问不存在的对象属性会导致 `undefined` 而不是抛出 `ReferenceError` ?

标签 javascript variables object-properties

当我尝试使用未声明的变量时,我得到了ReferenceError:

console.log(a); // Uncaught ReferenceError: a is not defined

我可以先使用一个变量,然后再定义它,这不会因为提升而成为问题。

console.log(a); // undefined

var a;

但是当我声明一个对象时,为什么执行上下文会让我使用它的任何属性?

var obj = {};

console.log(obj.a); // undefined
console.log(obj.why); // undefined

为什么即使从未在任何地方声明 awhy 也允许这些?

最佳答案

因为对象属性不是变量。规则不同。访问不存在的对象属性会返回 undefined,而不是错误。这就是语言的设计方式。

除了“这就是 Eich 设计的方式”之外,对于差异的一个可能的解释是您没有声明对象属性。你只是使用它们。但是必须声明变量(The Horror of Implicit Globals 除外,现在我们没有严格模式)。

关于javascript - 为什么访问不存在的对象属性会导致 `undefined` 而不是抛出 `ReferenceError` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31901994/

相关文章:

javascript - 使用 mustache 呈现 HTML 标记属性

javascript - FullCalendar,可以设置 selectable false 但允许选择插槽

javascript - 计算父 div 内的所有数字,然后按总计对它们进行排序

javascript - 隐藏文件的文本框上传浏览按钮

使用原型(prototype)的 Javascript 类变量范围

php - 如何从 JavaScript 读取 PHP 变量?

python - 如何使用函数在python中导入变量?

javascript - 如何使用具有对象属性的元素,例如 element.myobj.prop

javascript - 如何让 Vue.js 对动态添加的数组属性的更改使用react?