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

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

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

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

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


当前回答

我两分钱

严格模式的目标之一是允许更快地调试问题。 它会帮助开发者, 当某些错误的事情发生, 可能导致您网页的沉默和奇怪行为时, 它会提出例外, 从而帮助开发者。 当我们使用严格模式时, 代码会丢弃错误, 帮助开发者提前修正它 。

在严格使用后我学到的几件重要东西:

防止全球变量声明:

“ 严格” ; var tree1data = { name: 'banana tree', age: 100,leafcount: 100,leafcount: 100,000}; 函数树( 树类型) { var age; var lifcount; 年龄 = tree. age; 叶数 = kree.leafcount; 树名称 = tree. name; }; var tree1 = 新树( riet1data); 控制台. log( windowowow);

现在, 这个代码创建了全球范围的树名, 可以使用 window. nameoftree 访问 。 当我们严格使用这个代码时, 代码会丢弃错误 。

未标记的引用引用器: 未定义树名 。

以下列语句删除:

无法使用像丑化js这样的工具对语句进行简单化。 它们也会被折旧, 从未来的 Javarint 版本中删除 。

样本 :

“ 严格” ; var tree1data = { name: 'banana tree', 年龄: 100, 叶数: 100 000} ; 函数树( 树类型) { var 年龄; var 叶数; 年龄= 树类型. age; 叶数= 树类型.leafcount; // 树名称= 树类型. name; 对于 (var i = 0; i & lt; 2) { / let( leafcount = i) { { / * do something */} { (val i = 0; i & lt; 2; +u) { 和 (leafcount = i) { { {/ * do something} {; var tree1 = 新的树 (tree1data); { likefor.log( windo) 。

防止重复:

当我们有重复财产时,它是一种例外,

unacaute 语法解析器: 在严格模式下不允许以对象文字复制数据属性

“严格使用”; var 树1data = { 名称: “香蕉树 ” , 年龄: 100, 叶数: 100 000, 名称: “香蕉树 ” ;

很少有更多的人,但我需要获得更多这方面的知识。

其他回答

严格使用是让你的代码更安全的一种方法, 因为您不能使用危险特性, 这些特性不能像你预期的那样工作。 正如以前所写的那样, 它使代码更加严格。

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

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

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

从 w3 学校中引用:

使用“ 严格” 指令“ 使用严格” 指令在 javascript 1. 8. 5 ( 简写文本 5 ) 中是新的 。 它不是一个声明, 而是字面表达, 先前版本的 javascript 忽略了它。 “ 使用严格” 的目的是表示代码应该以“ 严格模式” 执行 。 您不能使用未声明的变量。 例如, 为何使用严格模式? 严格模式使得写“ 安全” javascript 更容易。 严格模式更改以前接受的“ 坏语法 ” 。

详情请查阅http://www.w3schools.com/js/js_stric.asp。

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

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

"use strict";

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

严格模式对普通正文语义进行若干修改 :

消除一些标注的沉默错误, 将其修改为丢弃错误 。 修补错误, 使标标注的引擎难以进行优化 。 禁止某些可能在未来版本的标注中定义的语法 。

用于获取更多信息的 严格模式- javamart