鍍金池/ 問答/HTML/ 一道JS面試題,連續(xù)賦值,求解

一道JS面試題,連續(xù)賦值,求解

// 變種題
(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呢

回答
編輯回答
喜歡你

這涉及到的是變量作用域提升知識:
var x = c = b = {a:1} 等價于

b = {a:1};  //注意沒有var
c = b;  //注意沒有var
var x = c;

如果你使用了var關鍵字,這個變量將只在定義它的函數(shù)內(nèi)生效。 沒有使用var關鍵字,這個變量將提升為全局變量。
所以,在外部直接使用x.a時直接報錯,因為在外面的作用域中,x根本未定義,更談不上x.a。而c和b是全局變量,能夠被訪問到。

2017年2月23日 18:11