一尘不染

“严格使用”在JavaScript中有什么作用,其背后的原因是什么?

javascript

最近,我通过Crockford的JSLint运行了一些JavaScript代码,它给出了以下错误:

第1行第1个字符处的问题:缺少“使用严格”语句。

通过搜索,我意识到有些人将"use strict";其代码添加到了JavaScript中。添加语句后,错误停止出现。不幸的是,谷歌没有透露此字符串语句背后的许多历史。当然,它一定与浏览器如何解释JavaScript有关,但是我不知道会有什么影响。

那么到底是"use strict";什么,它意味着什么,并且仍然有意义?

当前的浏览器是否响应该"use strict";字符串,或者该字符串可供将来使用?


阅读 421

收藏
2020-04-23

共1个答案

一尘不染

引用一些有趣的部分:

严格模式是ECMAScript 5中的一项新功能,可让您将程序或功能置于“严格”的操作环境中。这种严格的上下文会阻止采取某些措施,并引发更多异常。

和:

严格模式可以通过以下两种方式提供帮助:

  • 它捕获了一些常见的编码漏洞,并引发异常。
  • 当采取相对“不安全”的操作(例如获得对全局对象的访问权限)时,它可以防止或引发错误。
  • 它禁用令人困惑或考虑不周的功能。

还要注意,您可以将“严格模式”应用于整个文件…或者您只能将其用于特定功能 (仍引用John Resig的文章)

// Non-strict code...

(function(){
  "use strict";

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

// Non-strict code...

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

因此,我想它有点像"use strict"您可以在Perl中使用的 (因此得名?) :通过检测更多可能导致损坏的内容,它可以帮助您减少错误。

所有主要浏览器现在都支持严格模式。在[本机ECMAScript模块带有importexport语句)和ES6类中,严格模式始终处于启用状态,不能被禁用。

2020-04-23