// 变种题
(function(){
var x = c = b = {a:1}
})()
console.log(x.a); // error , x is not defined
console.log(c,b) // {a: 1} {a: 1}
这里为何x.a是undefined呢
// 变种题
(function(){
var x = c = b = {a:1}
})()
console.log(x.a); // error , x is not defined
console.log(c,b) // {a: 1} {a: 1}
这里为何x.a是undefined呢
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
3 回答1.3k 阅读✓ 已解决
这涉及到的是变量作用域提升知识:
var x = c = b = {a:1}
等价于如果你使用了var关键字,这个变量将只在定义它的函数内生效。 没有使用var关键字,这个变量将提升为全局变量。
所以,在外部直接使用x.a时直接报错,因为在外面的作用域中,x根本未定义,更谈不上x.a。而c和b是全局变量,能够被访问到。