我目前正在关注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 …
Run Code Online (Sandbox Code Playgroud) javascript ×1