gpt4 book ai didi

javascript - 很难理解 javascript 示例

转载 作者:数据小太阳 更新时间:2023-10-29 05:25:07 26 4
gpt4 key购买 nike

我目前正在学习 javascript 类(class),但在理解其中一个示例中 javascript 幕后发生的事情时遇到了问题(请参阅下面的代码)。

我理解大部分代码并理解为什么记录的输出是 -> [false, true, true]。然而,有一部分让我抓狂(我在底部的代码中用箭头指向它):

我的困惑围绕着参数 1:

参数 1checkPastLimitSimplified(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);

最佳答案

让我们重命名变量以查看关系:

var checkPastLimitSimplified = function(outer_limiter) {
return function(limiter, item) {
return item > limiter;
}.bind(this, outer_limiter);
};

bind 在 return 之前将函数签名修改为 function(item)
当客户端代码将调用 checkPastLimitSimplified(1)(item) 时,限制器将从绑定(bind)的上下文中替换。

关于javascript - 很难理解 javascript 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39229787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com