3 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個贊
包括打印和alert的值如下:
1、
function a() { console.log(2); }
2、2
3、
function a() { console.log(1); }
4、1
5、
function a() { console.log(1); }
原因: var c = d = a;
從右向左執(zhí)行,d=a
,d沒有使用var聲明,是一個全局變量,方法外部可訪問。
6、報錯,原因:c是函數(shù)內(nèi)部的變量,外部訪問不到的,外部變量c是undefined。
其它的就不一一解釋原因了,本質(zhì)就是變量提升和函數(shù)聲明提升的問題。

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個贊
1: function a() {
console.log(2);
}
2,3 var a = function () {
console.log(1);
}
4: 報錯
因?yàn)?函數(shù)提升優(yōu)于變量提升 且 變量提升只聲明不賦值, 局部變量作用于局部

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個贊
實(shí)際上,這段代碼是這么跑的:
~function () {
//hoisting
function a() {
console.log(2);
}
var a;
alert(a);
a();
a = function () {
console.log(1);
}
alert(a)
a();
d = a;
var c = d;
}();
alert(d);
alert(c);
添加回答
舉報