最近,我通过Crockford的jslint 输入了一些我的笔记本代码, 它犯了以下错误:

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

某些搜索, 我意识到有些人在他们的 javascript 代码中添加了“ 严格使用 ” ; 。 一旦我添加了该语句, 错误就不再出现。 不幸的是, Google 并没有揭示此字符串语句背后的大部分历史。 当然, 它肯定与浏览器如何解读该语句有关, 但我不知道效果会是什么 。

那么,什么是“严格使用”;什么是“严格使用”;一切,它意味着什么,它是否仍然相关?

当前的任何浏览器是否响应“ 严格使用 ” ; 字符串, 或是否未来使用 ?


当前回答

如果您使用在去年左右的一年中释放的浏览器, 那么它很可能支持 javascript 严格模式。 只有旧浏览器才会在 5 缩写5 成为当前标准之前使用, 不支持它 。

命令周围的引号确保代码在旧浏览器中仍然有效(尽管那些在严格模式下产生语法错误的东西通常只会导致脚本在旧浏览器中发生一些难以探测的故障 ) 。

其他回答

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

“使用严格”指令在5版缩写文本中是新的“使用严格”指令。它不是一个声明,而是一个字面表达式,被先前版本的 Javascript 忽略。“使用严格”的目的是表示代码应该以“严格模式”执行。例如,不能使用未声明的变量。

所有现代浏览器都支持“严格使用”,

不利情况

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

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

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

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

https://www.tutoricsteacher.com/javascript/javascript-strict

开发商使用“严格使用”的主要理由如下:

使用“ 使用严格( ) ” 将会确保变量在使用前以 var 来声明 。 例如 : 函数 usestratedemo () { 使用严格 { ; // works finevar a = ' no problem' ; /// does not works fine fine and problem k = “ problem” // 即便如此, 也会丢弃错误 object = {` problem' : 'Problection'} ;} n.b: “ 使用严格” 指令仅在脚本或函数开始时得到承认 。 字符串“ argument” 不能用作 varibl 。

简而言之,将减少代码的错误易感性,并反过来使您写好代码。

以阅读更多关于它的内容,您可在此查询。

使用严格的使用来显示常见的重复错误, 以便以不同的方式处理错误, 并改变 Java 脚本的运行方式,

避免意外发生全球事故, 任何重复都不得消除, 消除这种胁迫性, 更安全的不可改变的电算错误() 。

您也可以阅读此文章的细节

“ 严格使用 ” ; 是程序员不会使用松散或刺绣的坏性能的保险。 它是一种指南, 就像标尺会帮助您做直线。 “ 严格使用” 有助于您做“ 直线编码 ” 。

那些不愿使用统治者直线行事的人 通常最终会出现在那些网页上 要求其他人调试他们的代码

杜格·克罗克福德(Doug Crockford)曾是一位高级刺绣开发商, 多年来一直担任高级刺绣开发商, 他在这里有一个非常有趣的职位。

现代刺绣作业应总是引出“严格使用”的“严格使用”; 柔和。 ecma组之所以选择“严格”模式的唯一原因是允许经验较少的编码员使用刺绣,然后给予时间适应新的、更安全的编码作业。

用于 ES6 模块的更新

本地缩略语模块(有进出口语句)和 ES6 类内部的缩略语模块, 严格模式总是被启用, 无法禁用 。

原始答案

这条关于刺写严格模式的文章可能会引起你的兴趣:John Revig - ecmaric 5 严格模式,json,等等。

引用一些有趣的部分:

严格模式是文稿 5 中的新特征, 允许您在“ 严格” 操作背景下放置一个程序或函数。 这种严格环境防止采取某些行动, 并丢弃更多例外 。

并且:

严格模式在几个方面有所帮助:它捕捉到一些常见的编码工具,抛出一些例外。当采取相对“不安全”的行动(例如进入全球对象)时,它会防止或丢出错误。它会禁用一些混淆不清或考虑不周的特征。

注意您也可以对整个文件应用“ 限制模式” ...... 或者您只能将其用于特定功能( 仍在引用 John Revig 的文章 ) :

// Non-strict code...

(function(){
  "use strict";

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

// Non-strict code...

如果你必须混合新旧代码和旧代码,

所以,我想这有点像“严格使用”在 Perl 中可以使用(比如这个名称? ) : 它可以帮助您减少错误, 通过检测更多的可能导致分裂的东西。

现在所有主要浏览器都支持严格模式 。