我有库代码做一个简单的函数赋值。可以从全局范围访问此函数。
当我在文件开头添加"use strict"
时,我在TypeError: a is undefined
分配时收到错误a.b
。
"use strict"; /* Remove this and 'a' is defined */
(function() {
var a = this;
a.b = function() {
document.getElementById('test').innerHTML = 'abc';
};
})();
b();

<div id="test"></div>
&#13;
考虑到在前一行声明var a
,为什么会出现此错误?
答案 0 :(得分:1)
全球泄漏
有很多情况可能会导致这种情况发生 全球对象。例如,如果您忘记提供新的 调用构造函数时的前缀,构造函数是这个 将意外绑定到全局对象,因此而不是 初始化一个新对象,它将默默地篡改 全局变量。在这些情况下,严格模式将绑定 这到undefined,这将导致构造函数抛出一个 异常,允许更快地检测到错误。
所以你没有 a 作为这个,但你的 a 未定义,所以你无法制作 b 到未定义