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

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

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

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

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


当前回答

部分1: 缩略语 5 说明使用“严格使用”开关的递增使用 如何让缩略语执行者 清理大量刺略语的危险特征 而不突然打破世界上每个网站

当然,它也谈到很多这些错误的特征是什么,5 是如何修补这些错误的。

其他回答

“严格使用”使javascript代码以严格的方式运行,这基本上意味着在使用前必须界定一切。 使用严格模式的主要原因是避免意外地在全球使用未定义的方法。

严格的方式,事情跑得更快, 一些警告或无声警告 扔出致命错误, 最好总是用它来做一个更干净的代码。

在ecma5中,广泛需要使用“严格使用”一词,在ecma6中,它默认是javascript的一部分,因此,如果使用es6,则不需要添加“严格使用”一词。

看看这些声明和Mdn的例子:

“ 使用严格” 指令在 javascript 1. 8. 5 (缩写文本 5 ) 中是新的“ 使用严格” 指令, 在 javascript 1. 8. 5 ( 缩写文本 5 ) 中, “ 使用严格” 指令不是一种声明, 而是一种字面表达, 先前版本的 javascript 忽略了它。 “ 使用严格” 的目的是表示代码应该在“ 严格模式” 中执行。 您不能使用未声明的变量。 例如, 使用“ 使用严格” 的例子: 功能的严格模式 : 同样, 要对函数使用严格模式, 请填写准确的 sta 。

(1) (1) 功能的严格模式

 function strict() {
     // Function-level strict mode syntax
     'use strict';
     function nested() { return 'And so am I!'; }
     return "Hi!  I'm a strict mode function!  " + nested();
 }
 function notStrict() { return "I'm not strict."; }

 console.log(strict(), notStrict());

2) 完全上标的严格模式

'use strict';
var v = "Hi! I'm a strict mode script!";
console.log(v);

3 (3) 转让给一个不可撤销的全球公司

'use strict';

// Assignment to a non-writable global
var undefined = 5; // throws a TypeError
var Infinity = 5; // throws a TypeError

// Assignment to a non-writable property
var obj1 = {};
Object.defineProperty(obj1, 'x', { value: 42, writable: false });
obj1.x = 9; // throws a TypeError

// Assignment to a getter-only property
var obj2 = { get x() { return 17; } };
obj2.x = 5; // throws a TypeError

// Assignment to a new property on a non-extensible object.
var fixed = {};
Object.preventExtensions(fixed);
fixed.newProp = 'ohai'; // throws a TypeError

您可以在 mdn 上阅读更多信息。

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

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

例如,

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

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

由于浏览器的战争和不良的管理,手稿的设计和实施过于仓促。 结果导致许多设计决定不善,不直观的语法和混淆不清的语义进入了语言。 严格的方式旨在修正其中的一些错误。

“使用严格”指令在向程序员传达代码的同时, 也设定了对代码的替代解释。

例如,此关键字指方法定义中的对象,如此,或指其他语言的自定义。

let o = {
  name: 'John Doe',
  sayName: function(){
    console.log(this.name);
  }
};

o.sayName(); // 'John Doe'

这在方法上下文之外没有任何目的,但所有javascript函数都有这个关键词,无论它们是否为方法:

function run() {
  console.log(this);
}

run(); // Window

在这里,这是对一个全球目标的确定,它没有意义,也没有意义,因为全球目标已经在范围中存在。

在一个全球功能中,严格地以这种方式,决心作出不确定的决定,这正是我们所期望的。

"use strict"

function run() {
  console.log(this);
}

run(); // undefined

有些错误即使严格的方式也无法固定, 因为语法应该对旧浏览器有效, 因为它们忽略了“ 限制模式” 指令。 这是故意的 。

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

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

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

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

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

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

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

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

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

3⁄4 ̄ ̧漯B

使用“ 严格 ” , 是否是使刺绣更加坚固的“ 严格 ” 。 它带来js 试图使其至少略微“ 严格 ” ( 其他语言自90年代以来实施严格的规则 ) 。 它实际上是“ 强制” 刺绣开发者遵循某种最佳编码实践 。 但是, 刺绣非常脆弱 。 没有打印变量、 打字方法等东西。 我强烈建议刺绣开发者学习一种更强有力的语言, 如 java 或 actscript3 和 impl 。