我可以调用这样的方法
Func.apply(null,[123]);
如果函数依赖this
指针,会抛出异常吗?
来自Mozilla 开发网络:
这个Arg
this
为调用提供的值fun
。注意,这可能不是方法看到的实际值:如果方法是非严格模式代码中的函数,null
将undefined
被替换为全局对象,原始值将被装箱。
换句话说,除非函数使用严格模式,否则将使用 thenwindow
代替null
. 如果它确实使用严格模式,this
将是null
.
这是否会导致任何异常完全取决于所应用的功能。如果该函数不使用this
,则传递任何值都是完全安全的。如果它被视为this
一个可能不为 null 的普通对象,则它可能仅在严格模式下失败。如果它依赖于设置的某些属性,那么它很可能会TypeError
在严格模式和非严格模式下抛出类似的。创建一个仅在非严格模式下失败的函数也很容易(例如,通过添加显式检查)
(至少有一些)内置数组函数使用显式检查。例如Array.prototype.split(undefined, [1,2,3])
在 Chrome 上抛出一个TypeError: Cannot call method 'apply' of undefined