Javascript 调用方法将使此对象为空
我可以调用这样的方法Javascript 调用方法将使此对象为空,javascript,Javascript,我可以调用这样的方法 Func.apply(null,[123]); 如果函数依赖于此指针,它是否会从以下位置引发异常?: 蓟马 为调用fun提供的this的值。请注意,这可能不是该方法看到的实际值:如果该方法是非严格模式代码中的函数,null和undefined将替换为全局对象,并且原始值将被装箱 换句话说,除非函数使用严格模式,否则将使用window而不是null。如果它使用严格模式,此将为空 这是否会导致任何异常完全取决于所应用的函数。如果函数不使用此,则完全可以安全地传递任何值。如果它
Func.apply(null,[123]);
如果函数依赖于此
指针,它是否会从以下位置引发异常?:
蓟马
为调用fun
提供的this
的值。请注意,这可能不是该方法看到的实际值:如果该方法是非严格模式代码中的函数,null
和undefined
将替换为全局对象,并且原始值将被装箱
换句话说,除非函数使用严格模式,否则将使用window
而不是null
。如果它使用严格模式,此
将为空
这是否会导致任何异常完全取决于所应用的函数。如果函数不使用此,则完全可以安全地传递任何值。如果它将此
视为可能不为null的普通对象,则它可能仅在严格模式下失败。如果它依赖于设置的某个属性,则很可能在严格模式和非严格模式下都会抛出TypeError
。创建仅在非严格模式下失败的函数非常容易(例如,通过添加显式检查)
(至少有些)内置数组函数使用显式检查。例如,Chrome上的
Array.prototype.split(未定义[1,2,3])
抛出了一个TypeError:无法调用未定义的方法“apply”
自己试试。如果抛出,请在此询问原因?不同的实现可能会有所不同,这取决于函数使用this
执行的操作,以及函数是否处于严格模式。它可能会也可能不会抛出错误。但在严格模式下,它肯定会抛出错误。