var out = 25,
inner =
};console.log((inner.func, inner.func)());
console.log(inner.func());
console.log((inner.func)());
console.log((inner.func = inner.func)());
25,20,20,25
**解析:這道題的考點分兩個
1.作用域
2.運算子(賦值預算,逗號運算)
先看第乙個輸出:25,因為(inner.func, inner.func)是進行逗號運算子,逗號運算子就是 運算前面的,
返回最後乙個,舉個栗子
var i=0,j=1,k=2;
console.log((i++,j++,k))//返回的是k的值 2 ,如果寫成k++的話 這裡返回的就是 3
console.log(i);//1
console.log(j);//2
console.log(k);//2
回到原題(inner.func, inner.func)就是返回inner.func而inner.func只是乙個匿名函式
function ()
而且這個匿名函式是屬於window的
則變成了
(function () )()
此刻的this–》window
所以out 是25
第二和第三個console.log的作用域都是 foo,也就是他們執行的其實是
foo.func();
foo作用域中是有out變數的,所以結果是20
第四個console.log
考查的是乙個等號運算inner.func = inner.func 其實返回的是運算的結果,
舉個栗子
var a=2,b=3;
console.log(a=b)//輸出的是3
所以inner.func = inner.func 返回的也是乙個匿名函式
function ()
此刻 道理就和第乙個console.log一樣了 輸出的結果是 25
js的一道經典題目
今天碰到一道題,裡面既包含了匿名函式的知識,也包含了預編譯,函式的傳參 形參 感覺迷迷糊糊的,所以想著做個總結。var foo function foo console.log foo.n foo console.log foo.n 上面的 可以寫成這樣,看解釋 1 var foo 2 functi...
js的一道經典題目
今天碰到一道題,裡面既包含了匿名函式的知識,也包含了預編譯,函式的傳參 形參 感覺迷迷糊糊的,所以想著做個總結。var foo function foo console.log foo.n foo console.log foo.n 上面的 可以寫成這樣,看解釋 1 var foo 2 functi...
LeedCode經典題目
目錄 尋找陣列中心索引 至少是其他數字兩倍的最大數 加一 給定乙個整數型別的陣列 nums,請編寫乙個能夠返回陣列 中心索引 的方法。我們是這樣定義陣列中心索引的 陣列中心索引的左側所有元素相加的和等於右側所有元素相加的和。如果陣列不存在中心索引,那麼我們應該返回 1。如果陣列有多個中心索引,那麼我...