在一次采访中被问到这一点:这个函数永远不会返回“对象”吗?
function foo() { return typeof this; }
我说不确定,但是我猜到了
foo.bind(undefined)()
可能会返回'undefined'
。但是无法在我的控制台中在家测试它。
答案 0 :(得分:6)
在严格模式下,this
将不被强制转换为对象:
'use strict';
function foo() { return typeof this; }
console.log(foo.call('abc'));
console.log(foo.call(5));
(但这是要尝试的真的很奇怪的事情,我希望永远不要在严肃的代码中看到它)
如果没有调用上下文,在严格模式下, this
也可以undefined
:
'use strict';
function foo() { return typeof this; }
console.log(foo());
在草率模式下,似乎函数没有被强制转换为对象(尽管基元 do ):
function foo() { return typeof this; }
console.log(foo.call(() => 'abc'));