我目前正在关注一个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()'表达式。 –