原題目是這樣的:求輸出值var i = 10;function foo () {
console.log(i)
}
(function (fn) {
var i = 20
fn()
})(foo)結果是10,為什么不是20呢,根據作用域鏈,傳進來的這個foo函數在執行 console.log(i) 時,不是應該先在這個塊級作用域里找變量 i 的值嗎?我在chrome控制臺又寫了這樣一段類似的代碼:var i = 10;(function () {
var i = 20;
(function () {
console.log(i)
})()
})()不過這次輸出了20,我的疑問是,同樣是在一個閉包中執行的 console.log(i) ,面試題中是匿名函數作為參數傳入,能不能幫我分析一下兩者的不同。。。這個問題對很多人來講應該挺初級的,但是我就是一時想不明白了,還望大神們給個詳細的分析,菜鳥在此謝過了。
一道前端面試題的疑問
一只甜甜圈
2018-08-03 08:19:24