最近,我通过克罗福德 查了一些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
还有更多的特征,检查在这里更多! 更多! 更多! 更多! 更多!
我强烈建议每个开发商现在就开始使用严格模式。 有足够的浏览器支持严格模式,严格模式将合法帮助我们避免我们甚至不知道的代码中的错误。
显然,在最初的阶段,我们从未遇到过错误。 为了获得全部好处,我们需要在转换到严格模式后进行适当的测试,以确保我们抓住了一切。 当然,我们不只是抛掷而已。use strict
在我们的代码中,假设没有错误。 因此,语句是,是时候开始使用这个非常有用的语言功能来写更好的代码了。
例如,
var person = {
name : 'xyz',
position : 'abc',
fullname : function () { "use strict"; return this.name; }
};
JSLint JSLint由 Douglas Crockford 撰写的调试器。 只需在您的脚本中粘贴,它就能快速扫描代码中任何明显的问题和错误。
更新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 中使用(因此命名? )它可以帮助您减少错误, 通过检测更多可能导致破碎的东西。
严格模式为现在由所有主要浏览器支持.
ECMAScript 5采用了JavaScript“严格”模式。
(function() {
"use strict";
your code...
})();
书写"use strict";
在您的 JS 文件的顶端, 打开严格的语法检查 。 它为我们执行以下任务 :
如果您试图指定给一个未声明的变量,则显示错误。
停止您覆盖关键 JS 系统库
禁止某些不安全或容易出错的语言特征
use strict
也属于个别职能内的工作。use strict
在你的代码。
浏览器兼容性问题 : “ 使用” 指令意在向后兼容。 不支持这些指令的浏览器将只看到一个字符串字典, 但没有进一步引用。 因此, 他们将会通过它继续前进 。