gpt4 book ai didi

javascript - .call 方法的第一个参数 "optional"的含义

转载 作者:行者123 更新时间:2023-11-29 15:38:00 26 4
gpt4 key购买 nike

我对 Javascript Ninja 书的代码示例( list 6.9)进行了一些调整,使其更短。此代码片段是关于向 Array.prototype 添加 forEach 方法(我将其重命名为 fooEach 以避免混淆)。现在的问题是:为什么我们需要将 (context || null) 作为第一个参数(代码示例中的 null)传递? Function.call 方法的第一个参数——上下文——是可选的,那么为什么在这种情况下必须将上下文作为第一个参数传递?

if (!Array.prototype.fooEach) {                                
Array.prototype.fooEach = function(callback, context) {
for (var i = 0; i < this.length; i++) {
callback.call(context || null, this[i], i, this);
}
};
}
["a", "b", "c"].fooEach(function(value, index, array) {
console.log(value + " is in position " + index + " out of " + (array.length - 1));
});

最佳答案

Function.call method has its first argument -- the context -- optional, so why is it a must to pass the context as the first parameter in this case?

因为 .call() 是一个可变函数;它接受未知数量的参数,因此任何固定参数(或与其他参数具有不同语义的参数)都放在前面。

undefinednull 指定为第一个参数将用全局对象(在 non-strict 中)替换您正在调用的函数内的 this模式)。

关于javascript - .call 方法的第一个参数 "optional"的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24855006/

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