要传递给 fn.apply 的标准默认第一个参数
Standard default first argument to pass to fn.apply
我最近了解了Javascript中fn.apply()
的魔力,我正在使用它来保存所有参数完好无损的函数调用,并在以后调用它们。
但是,在我的用例中,我不需要第一个参数,上下文(this
),并且我想避免以某种方式将this
对象传递到其中,以便在我的代码中明确我不会为此使用.apply()
。
我的第一个想法是null
,但我在MDN上阅读了以下内容:
如果该方法是非严格模式代码中的函数,则
null
和undefined
将替换为全局对象,并且基元值将被装箱。
这似乎暗示通过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
值。
如果不想传递任何值,建议使用 null
或 undefined
。
相关文章:
- 用嵌套函数和默认函数定义函数
- 如何使用铁流星与流星的默认路线
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- CKeditor:更改对话框中的默认选择选项
- 在不阻止默认行为的情况下检测IE10中的缩放
- 如何从外部页面激活非默认引导选项卡
- 防止默认锚点行为AngularJS
- 我的shareService在angular 2中发送值工作正常,但当我渲染我的另一个组件时,会获得默认值
- jpm的默认Firefox路径没有'不起作用
- jquerydatetimepicker日期和时间应在框默认值中,而无需单击框
- 如果值为空,如何设置输入的默认值?jQuery
- 骨干模型默认值-todos.js示例中不必要的代码
- jquery日期选择器年份范围默认值
- jQuery:当屏幕大小改变时,如何更改默认图像和悬停图像
- 在哪里可以学习ECMAScript标准中尚未包含的JavaScript功能
- Highcharts-如何在自定义格式化程序中获得默认的y轴标签格式化程序
- 要传递给 fn.apply 的标准默认第一个参数
- 如何在默认情况下覆盖标准浏览器打印和打印iframe
- 插入文档的动态iframe为标准模式,默认为怪僻模式
- 即使当前时间是标准时间,Javascript日期构造函数也默认为夏令时