首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ReferenceError与未定义

ReferenceError与未定义
EN

Stack Overflow用户
提问于 2019-08-23 20:50:17
回答 1查看 423关注 0票数 3

我有点被js的行为弄糊涂了。

代码语言:javascript
运行
复制
function foo(){
  console.log(a)
}

foo() // ReferenceError: a is not defined

在这种情况下,一切都是可以理解的。在全局范围中没有定义a,因此我们得到了ReferenceError

现在,这是第二个例子:

代码语言:javascript
运行
复制
function foo(){
  console.log(this.a)
}

foo() // undefined

因此,this指向没有定义a的全局范围。难道我们不应该得到同样的ReferenceError吗?我们为什么要得到undefined

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-23 21:15:44

基本上,当您使用一个还不是Reference error的变量时,undefined就会出现,而当您试图从对象中获取一些属性时,或者在对象中不存在键,或者使变量本身未定义时,undefined就会出现。

例如。

未定义

代码语言:javascript
运行
复制
  const obj = { };
  const array = [];
  const newObj = undefined;

  console.log(obj.id);// undefined
  console.log(newObj);// undefined
  console.log(array[0]);// undefined

参考误差

代码语言:javascript
运行
复制
 const obj = { };
 console.log(obj[id] = id);

Note this也是object,在您的示例中,您尝试从this访问a的值。

所以看起来

代码语言:javascript
运行
复制
const this = {};
console.log(this.a) // undefined
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57632862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档