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

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

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

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

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


当前回答

如果人们担心使用严格使用,

浏览器中的 5 个“ 限制模式” 支持 。 这是什么意思 ? novogeek. com - krishna 的 Webb 。

讨论浏览器支持, 但更重要的是如何安全处理:

function isStrictMode(){
    return !this;
} 
/*
   returns false, since 'this' refers to global object and 
   '!this' becomes false
*/

function isStrictMode(){   
    "use strict";
    return !this;
} 
/* 
   returns true, since in strict mode the keyword 'this'
   does not refer to global object, unlike traditional JS. 
   So here, 'this' is 'undefined' and '!this' becomes true.
*/

其他回答

用于 ES6 模块的更新

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

原始答案

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

引用一些有趣的部分:

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

并且:

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

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

// Non-strict code...

(function(){
  "use strict";

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

// Non-strict code...

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

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

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

我强烈建议每个开发商现在就开始使用严格模式。 有足够的浏览器支持严格模式,

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

例如,

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

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

我希望编辑最受欢迎的答案, 但失败了。

需要更多信息,请查看 mdn 文档。

“严格使用”5号标注5中引入的指令。

指令与声明相似,但不同。

严格使用不包含关键词:指令是一个简单的表达式语句,由特殊的字符串字典(单引或双引号)组成。 javastrash 引擎,不执行缩略图5, 只需看到表达式语句, 但没有副作用。 预计未来版本的缩略图标准会引入一个真正的关键词使用; 引号将因此过时。 只有在脚本或函数的开头使用严格使用, 也就是说, 它必须 prep 。

使用严格的指令 使用 严格指令 表明以下代码(在脚本或函数中)是严格的代码。 当脚本包含严格的使用指令时,以下代码(在脚本或函数中)是严格的代码。当脚本最高层次的代码(在函数中不是函数的代码)被视为严格的代码。当函数本身在严格的代码中定义时,或者当函数含有严格的指令时,函数的内容被视为严格的代码。当调用 evval () 时,传递到 eval () 方法的代码被视为严格的代码。

严格写字式5的严格模式是标本语言的一个限制性子集,它消除了有关语言的缺陷,并具有更严格的错误检查和更高安全性。 以下列出了严格模式与正常模式(前三种模式特别重要)之间的差异:

您无法在严格模式下使用声明。在严格模式下,所有变量都必须声明:如果您为未被声明为变量、函数、函数参数、抓抓-粘贴参数或全球对象属性的标识符指定一个值,那么您将获得一个引用器。在正常模式下,该标识符被默认为全球变量(作为全球对象属性),严格模式下,关键字具有未定义的函数值。

var hassstricmode = (函数 () {“ 严格使用 ” ; 返回此\\ un defered} () );

3⁄4 ̄ ̧漯B

John Revig写了个好摘要 写了个好摘要

这只是一个字符串,你放 在你的 javacript 文件( 在文件顶部或函数内部) 中, 看起来像这个 :

"use strict";

输入您的代码不应该对当前浏览器造成任何问题, 因为它只是一条字符串。 它可能会在未来对您的代码造成问题, 如果您的代码违反了 pragma 。 例如, 如果您目前拥有 Foo = “ bar ” 而不先定义 Foo , 您的代码将会开始失效... 在我看来这是件好事。

如果人们担心使用严格使用,

浏览器中的 5 个“ 限制模式” 支持 。 这是什么意思 ? novogeek. com - krishna 的 Webb 。

讨论浏览器支持, 但更重要的是如何安全处理:

function isStrictMode(){
    return !this;
} 
/*
   returns false, since 'this' refers to global object and 
   '!this' becomes false
*/

function isStrictMode(){   
    "use strict";
    return !this;
} 
/* 
   returns true, since in strict mode the keyword 'this'
   does not refer to global object, unlike traditional JS. 
   So here, 'this' is 'undefined' and '!this' becomes true.
*/