要传递给 fn.apply 的标准默认第一个参数

Standard default first argument to pass to fn.apply

本文关键字:标准 默认 第一个 参数 apply fn      更新时间:2023-09-26

我最近了解了Javascript中fn.apply()的魔力,我正在使用它来保存所有参数完好无损的函数调用,并在以后调用它们。

但是,在我的用例中,我不需要第一个参数,上下文(this),并且我想避免以某种方式将this对象传递到其中,以便在我的代码中明确我不会为此使用.apply()

我的第一个想法是null,但我在MDN上阅读了以下内容:

如果该方法是非严格模式代码中的函数,则nullundefined将替换为全局对象,并且基元值将被装箱。

这似乎暗示通过null甚至false是不好的做法。一个适当的虚假、空洞或其他明显明显的占位符值放在fn.apply()的第一个论点中是什么?

这似乎暗示通过null甚至false是不好的做法

不,不是。诚然,false作为一个this值有点奇怪,但MDN警告的问题是草率的模式函数。例子:

function sloppy() {
    console.log(this);
}
function strict() {
    "use strict";
    console.log(this);
}
sloppy.call(null); // <Window> (or whatever the global object is)
sloppy.call(false); // Boolean {}
strict.call(null); // null
strict.call(false); // false

所以只要使用严格模式,你就会没事的。并且不要惊讶于您无法在草率模式函数中获得原始this值。

如果不想传递任何值,建议使用 nullundefined