可能重复:
What does “use strict” do in JavaScript, and what is the reasoning behind it?
实际上,我知道use strict
在JavaScript中的作用,这里提出的问题是:
What does "use strict" do in JavaScript, and what is the reasoning behind it?
但我无法理解为什么我们应该在JavaScript库中使用strict
模式?我的意思是使用它有什么好处?
答案 0 :(得分:6)
您链接的问题,答案及其提供的参考文献列出了使用严格模式的一系列原因。
让我只提出其中一个:The Horror of Implicit Globals¹
非严格代码:
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
时错过了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工具无法完成的操作,例如禁止with
,更改未设置它的函数调用中的this
的默认值等。
¹(这是我贫血的小博客上的帖子)