最近,我通过克罗福德 查了一些JavaScript代码JSLint JSLint,并给出了以下错误:

第1行第1字符1:缺少“严格使用”声明的问题。

在做一些搜索时,我意识到有些人加了"use strict";输入 JavaScript 代码。 一旦我添加了该语句, 错误就不再出现。 不幸的是, Google 并未披露此字符串语句背后的大部分历史。 当然, 它肯定与浏览器如何解读 JavaScript 有关, 但我不知道效果会是什么 。

那么,什么是"use strict";关于它的意义是什么,它是否仍然相关?

当前浏览器中的任意浏览器响应"use strict";字符串, 还是用于未来用途 ?


当前回答

通常JavaScript通常不遵循严格的规则,从而增加出错的可能性。"use strict", JavaScript 代码应该像使用终止语、在启动前宣布等其它编程语言一样,遵循一套严格的规则。

如果(如果)"use strict"使用该代码时,代码的编写应遵循一套严格的规则,从而减少出错和模棱两可的可能性。

其他回答

开发者应该使用的主要理由"use strict"它们是:

  1. 防止意外宣布全球变量。"use strict()"将会确保变量被声明为var在使用之前使用。 如 :

    function useStrictDemo(){
     'use strict';
     //works fine
     var a = 'No Problem';
    
     //does not work fine and throws error
     k = "problem"
    
     //even this will throw error
     someObject = {'problem': 'lot of problem'};
    }
    
  2. 注:N.B:"use strict"指令仅在脚本或函数的开头确认。
  3. 字符串"arguments"无法用作变量 :

    "use strict";
    var arguments = 3.14;    // This will cause an error
    
  4. 将限制关键字作为变量的使用。 试图使用关键字将会丢弃错误 。

简言之,你的代码将减少容易出错的程度,反过来又将使得你写好代码。

更多信息,请查看在这里.

我强烈建议每个开发商现在就开始使用严格模式。 有足够的浏览器支持严格模式,严格模式将合法帮助我们避免我们甚至不知道的代码中的错误。

显然,在最初的阶段,我们从未遇到过错误。 为了获得全部好处,我们需要在转换到严格模式后进行适当的测试,以确保我们抓住了一切。 当然,我们不只是抛掷而已。use strict在我们的代码中,假设没有错误。 因此,语句是,是时候开始使用这个非常有用的语言功能来写更好的代码了。

例如,

var person = {
    name : 'xyz',
    position : 'abc',
    fullname : function () {  "use strict"; return this.name; }
};

JSLint JSLint由 Douglas Crockford 撰写的调试器。 只需在您的脚本中粘贴,它就能快速扫描代码中任何明显的问题和错误。

W3学校的引文:

“严格使用”指令

“严格使用”指令在JavaScript 1.8.5(ECMAScript 5版)中是新的指令。

它不是一种声明,而是一种字面表达,被以前版本的JavaScript所忽视。

“严格使用”的目的是表示代码应以“严格模式”执行。

在严格模式下,您不能使用未声明的变量。

为什么是严格模式?

严格模式使得写“security” JavaScript 更容易。

严格模式更改先前接受的“ 坏语法” 变为实际错误 。

例如,在普通 JavaScript 中,对变量名称进行错误描述会创建一个新的全局变量。在严格模式下,这将抛出一个错误,使意外创建全局变量成为不可能。

在普通 JavaScript 中,开发者不会收到任何错误反馈, 将值指定为不可写属性 。

严格地说,对非书面财产、唯有获得者财产、不存在的财产、不存在的变数或不存在的物体的任何转让,都会造成错误。

请参见http://www.w3schools.com/js/js_strict.asp了解更多

更新ES6模块的更新

ECMAScript 本地 ECMAScript 模块(与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 中使用(因此命名? )它可以帮助您减少错误, 通过检测更多可能导致破碎的东西。

严格模式为现在由所有主要浏览器支持.

“ 严格使用 ” ; 定义 JavaScript 代码应以“ 限制模式” 执行 。

  • ECMAScript 5版的新指令是“严格使用”指令。
  • 它不是一种声明,而是一种字面表达,被以前版本的JavaScript所忽视。
  • “严格使用”的目的是表示代码应以“严格模式”执行。
  • 在严格模式下,您不能使用未声明的变量。

所有现代浏览器支持“ 严格使用 ” , 除非因特网探索者 9 及以下.

缺点

如果开发商使用一个严格模式的图书馆, 但开发商通常使用正常模式,

更糟糕的是,由于开发商处于正常模式,他们没有被抛出额外错误的好处,因此错误可能会无声无息地失败。

此外,如上所列,严格模式阻止你做某些事情。

但有些开发商不喜欢这种限制, 并想使用语言的所有特征。