gpt4 book ai didi

javascript - 判断一个函数是用 null、undefined 还是非严格模式下的全局对象调用的

转载 作者:行者123 更新时间:2023-12-03 06:59:10 25 4
gpt4 key购买 nike

我正在寻找 TypeError每当使用 null 调用非严格模式下的特定函数时/undefined .通过强制函数以严格模式在本地执行有部分解决方法,但这是一个不完整的解决方案。

var t = function(s) { console.log(this) };
t.call(null), t.call(undefined); // window, window

(function() {
"use strict";
t = function(s) { console.log(this) }

t.call(null), t.call(undefined); // null, undefined
})();
如果 this,我也不能扔。是 window ,因为可以使用 this 合法调用该函数作为全局对象。是否有不涉及 use strict 的完整解决方法? ?

最佳答案

无法获取原始 nullundefined thisArgument 在草率模式函数中。您必须将函数包装在严格模式中。
请注意,调用位置的严格性对此并不重要,而只是函数的定义。你要

function t() {
"use strict";
// ^^^^^^^^^^^^^
console.log(this)
};

// calls in sloppy mode:
t(), t.call(null), t.call(undefined); // undefined, null, undefined

(function() {
"use strict";
// calls in strict mode:
t(), t.call(null), t.call(undefined); // undefined, null, undefined
})();

关于javascript - 判断一个函数是用 null、undefined 还是非严格模式下的全局对象调用的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64780732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com