我目前正在關注一個JavaScript課程,並且有一些問題了解JavaScript中幕後發生的一些示例(請參閱下面的代碼)。困難時間理解javascript示例
我瞭解大部分代碼,並理解爲什麼輸出記錄是 - > [false,true,true]。但是存在被我逼瘋一個部分(我指着底部在代碼中箭的話):
我的困惑是圍繞參數1
:
什麼旅途做參數1
起飛從checkPastLimitSimplified(1)
到var arr5 = mapForEach(arr1, checkPastLimitSimplified(1));
。
我知道當調用checkPastLimitSimplified(1)
時,會爲參數1在變量環境中的此函數創建執行上下文。
但現在會發生什麼? checkPastLimitSimplified
函數內的函數尚未執行,但剛剛返回。它返回時的樣子是什麼? limiter
變量在什麼時候收到參數1
?
據我所知,.bind(this, limiter);
創建該函數的副本。它的limiter
在返回之前已經變爲1了嗎?
function mapForEach(arr, fn) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
newArr.push(
fn(arr[i])
)
};
return newArr;
}
var arr1 = [1, 2, 3];
var checkPastLimitSimplified = function(limiter) { // < ----CONFUSED
return function(limiter, item) {
return item > limiter;
}.bind(this, limiter);
};
var arr5 = mapForEach(arr1, checkPastLimitSimplified(1));
console.log(arr5);
因此,如果我正確理解這一點,那麼通過調用'checkPastLimitSimplified(1)'傳遞給函數的參數'outer_limiter'在函數返回之前是否可用並在.bind中解析? (1,item){ return item>限制器; }'返回?所以'返回'不會停止.bind()在這一點執行? – Yapartase
當然,'return'涉及整個'function(){}。bind()'表達式。 –