乙個考察閉包的最基礎的面試題

2022-04-29 19:33:08 字數 553 閱讀 5291

fs=;

for(var x=0;x<5;x++)

}fs[2]();

上面**輸出是5,如果希望輸出是2

在我剛入行那個年代,這題目想考察的一定是閉包,如下:

fs =;

for (var x = 0; x < 5; x++)

})(x);

}fs[2]();

但是,2023年開始,es6成了面試必問套路。在es6裡面,多了乙個答案,如下:

fs=;

for(let x=0;x<5;x++)

}fs[2]();

即 var 改為let,利用了es6裡的塊級作用域。

fs =;

for (var x = 0; x < 5; x++) )

}}fs[2]();

先不說是否優雅,之前不管是別人面試我還是我面試別人,還真沒想到過可以用with加個object變數來做,每一次for迴圈都建立了新的object引用,自然每次迴圈建立函式的時候,就都是新的索引了。

碰上了個閉包的面試題

2018 03 22 今天面試有個筆試題是這樣的,咋一看返回乙個方法又呼叫自己,瞬間感覺有點暈乎乎的,看了一會也沒心情做了,然後就寫了乙個 undefind 回來查了一下才發現並不難,只是認真一點一步步分析也就分出來了 function fun n,o var a fun 0 a.fun 1 a.f...

閉包與變數的面試題

作用域鏈的這種配置機制引出了乙個值得注意的 即閉包只能取得包含函式中任何變數的最後乙個值。別忘了閉包所儲存的是整個變數物件,而不是某個特殊的變數。下面這個例子可以清晰地說明這個問題。function createfunctions return result var funcs createfunc...

乙個面試題

題目是 假設乙個 搜尋引擎收錄了2 24首歌曲,並記錄了可收聽這些歌曲的2 30條url,但每首歌的url不超過2 10個。系統會定期檢查這些url,如果乙個url不可用則不出現在搜尋結果中。現在歌曲名和url分別通過整型的song id和url id唯一確定。對該系統有如下需求 1 通過song ...