实际上,我知道use strict
JavaScript 在 JavaScript 中的作用是
什么:“use strict”在 JavaScript 中做了什么,其背后的原因是什么?
但我不明白为什么我们应该strict
在 JavaScript 库中使用模式?我的意思是使用它有什么好处?
实际上,我知道use strict
JavaScript 在 JavaScript 中的作用是
什么:“use strict”在 JavaScript 中做了什么,其背后的原因是什么?
但我不明白为什么我们应该strict
在 JavaScript 库中使用模式?我的意思是使用它有什么好处?
您链接的问题、它的答案以及它提供的参考资料列出了使用严格模式的一系列原因。
让我只说其中一个:隐式全局变量的恐怖¹
非严格代码:
function foo(a) {
var myvar;
myar = a * 4;
// ...
return myvar;
}
现在,这段代码:
console.log(foo(2));
...应该记录“8”,对吗?但它没有,它总是记录“未定义”:
function foo(a) {
var myvar;
myar = a * 4;
// ...
return myvar;
}
console.log(foo(2));
更重要的是,它默默地创建了一个名为myar
. 为什么?因为我的代码中有错字(我在将其设置为 时错过了v
in )。myvar
a * 4
与之比较:
function foo(a) {
"use strict";
var myvar;
myar = a * 4;
// ...
return myvar;
}
console.log(foo(2));
现在,我得到了一个很好的错误消息,而不是一个奇怪的返回值和一个全局变量被创建:ReferenceError: "myar" is not defined
现在,可以使用 lint 工具来完成严格模式的特定方面。但是,当您只是尝试修复某些内容并在编辑器和浏览器之间跳转时,您并不总是在您的编码工具链中使用 lint 工具。所以当浏览器帮助你时很好。
另外,严格模式执行 lint 工具无法完成的事情,例如 disallowing 、更改未设置它的函数调用with
的默认值等。this
¹ (这是我贫血的小博客上的一篇文章)