最近,我通过克罗福德 查了一些JavaScript代码JSLint JSLint,并给出了以下错误:
第1行第1字符1:缺少“严格使用”声明的问题。
在做一些搜索时,我意识到有些人加了"use strict";
输入 JavaScript 代码。 一旦我添加了该语句, 错误就不再出现。 不幸的是, Google 并未披露此字符串语句背后的大部分历史。 当然, 它肯定与浏览器如何解读 JavaScript 有关, 但我不知道效果会是什么 。
那么,什么是"use strict";
关于它的意义是什么,它是否仍然相关?
当前浏览器中的任意浏览器响应"use strict";
字符串, 还是用于未来用途 ?
严格模式允许在 v8 引擎中设置严格的特性。 某些特性的短示例 :
您可通过写作方式在全球范围启用它 :
'use strict'; // strict mode enabled!
您只是在函数中包含的每个函数 :
let myfunc = () => {
'use strict'; // strict mode enabled
b = 0; // broke
}
- 在使用该变量( sane imo) 之前, 您必须声明变量 :
var x;
x = '0'; // ok
y = ''; // not ok
还有更多的特征,检查在这里更多! 更多! 更多! 更多! 更多!
更新ES6模块的更新
内ECMAScript 本地 ECMAScript 模块(与import
和export
和 报表)和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 中使用(因此命名? )它可以帮助您减少错误, 通过检测更多可能导致破碎的东西。
严格模式为现在由所有主要浏览器支持.