最近,我通过CrockfordJavaScript代码运行了一些JSlint,并且给出以下错误:

第1行的问题1:缺少"使用严格"语句。

进行一些搜索,我意识到有些人补充"use strict";进入他们JavaScript代码。一旦添加了该语句,错误就停止出现。不幸的是,Google并没有透露此字符串语句背后的许多历史。当然,它必须与浏览器解释JavaScript有关,但我不知道会有什么效果。

那是什么"use strict";一切都暗示,它仍然相关吗?

执行当前浏览器的任何响应"use strict";字符串还是供将来使用?

答案

更新ES6模块

里面本机ecmasiprcript模块(和importexport语句)和ES6类,始终启用严格模式,不能禁用。

原始答案

有关JavaScript严格模式的本文可能会让您感兴趣:John Resig -Ecmascript 5严格模式,JSON等等

引用一些有趣的部分:

严格模式是Ecmascript 5中的一项新功能,可让您在"严格"操作上下文中放置程序或功能。这种严格的上下文阻止了某些行动被采取并引发更多例外。

和:

严格模式通过几种方式有所帮助:

  • 它捕获了一些常见的编码泡沫,引发了例外。
  • 当采取相对"不安全"的动作(例如获得对全局对象的访问)时,它会防止或丢弃错误。
  • 它可以禁用令人困惑或经过深思熟虑的功能。

另请注意,您可以将"严格模式"应用于整个文件…或者您只能将其用于特定功能*(仍在引用约翰·瑞斯(John Resig)的文章中)*:

// Non-strict code...

(function(){
  "use strict";

  // Define your library strictly...
})();

// Non-strict code...

如果您必须混合旧代码和新代码,这可能会有所帮助;-)

所以,我想这有点像"use strict"你可以在 Perl 中使用*(由此得名?)*:通过检测更多可能导致破裂的东西,它可以帮助您少犯更多的错误。

严格模式现在得到所有主要浏览器的支持

来自: stackoverflow.com