最近,我通过Crockford的JSLint运行了一些JavaScript代码,它给出了以下错误:
第1行第1个字符处的问题:缺少“使用严格”语句。
通过搜索,我意识到有些人将"use strict";其代码添加到了JavaScript中。添加语句后,错误停止出现。不幸的是,谷歌没有透露此字符串语句背后的许多历史。当然,它一定与浏览器如何解释JavaScript有关,但是我不知道会有什么影响。
"use strict";
那么到底是"use strict";什么,它意味着什么,并且仍然有意义?
当前的浏览器是否响应该"use strict";字符串,或者该字符串可供将来使用?
引用一些有趣的部分:
严格模式是ECMAScript 5中的一项新功能,可让您将程序或功能置于“严格”的操作环境中。这种严格的上下文会阻止采取某些措施,并引发更多异常。
和:
严格模式可以通过以下两种方式提供帮助: 它捕获了一些常见的编码漏洞,并引发异常。 当采取相对“不安全”的操作(例如获得对全局对象的访问权限)时,它可以防止或引发错误。 它禁用令人困惑或考虑不周的功能。
严格模式可以通过以下两种方式提供帮助:
还要注意,您可以将“严格模式”应用于整个文件…或者您只能将其用于特定功能 (仍引用John Resig的文章) :
// Non-strict code... (function(){ "use strict"; // Define your library strictly... })(); // Non-strict code...
如果您必须混合使用旧代码和新代码,这可能会有所帮助;-)
因此,我想它有点像"use strict"您可以在Perl中使用的 (因此得名?) :通过检测更多可能导致损坏的内容,它可以帮助您减少错误。
"use strict"
所有主要浏览器现在都支持严格模式。在[本机ECMAScript模块带有import和export语句)和ES6类中,严格模式始终处于启用状态,不能被禁用。
import
export