最近,我通过克罗福德 查了一些JavaScript代码JSLint JSLint,并给出了以下错误:
第1行第1字符1:缺少“严格使用”声明的问题。
在做一些搜索时,我意识到有些人加了"use strict";
输入 JavaScript 代码。 一旦我添加了该语句, 错误就不再出现。 不幸的是, Google 并未披露此字符串语句背后的大部分历史。 当然, 它肯定与浏览器如何解读 JavaScript 有关, 但我不知道效果会是什么 。
那么,什么是"use strict";
关于它的意义是什么,它是否仍然相关?
当前浏览器中的任意浏览器响应"use strict";
字符串, 还是用于未来用途 ?
ECMAScript 5采用了JavaScript“严格”模式。
(function() {
"use strict";
your code...
})();
书写"use strict";
在您的 JS 文件的顶端, 打开严格的语法检查 。 它为我们执行以下任务 :
如果您试图指定给一个未声明的变量,则显示错误。
停止您覆盖关键 JS 系统库
禁止某些不安全或容易出错的语言特征
use strict
也属于个别职能内的工作。use strict
在你的代码。
浏览器兼容性问题 : “ 使用” 指令意在向后兼容。 不支持这些指令的浏览器将只看到一个字符串字典, 但没有进一步引用。 因此, 他们将会通过它继续前进 。
我的两分钱:
严格模式的目标之一是允许更快地调试问题。 它有助于开发者, 当某些错误的事情发生时, 可能导致您网页的沉默和奇怪行为时, 将例外丢弃给开发者 。 我们使用的时间 use strict
,代码将排除错误,帮助开发者提前修正错误。
使用后我学到的几件重要东西 use strict
:
防止全球变量宣言:
"use strict";
var tree1Data = { name: 'Banana Tree',age: 100,leafCount: 100000};
function Tree(typeOfTree) {
var age;
var leafCount;
age = typeOfTree.age;
leafCount = typeOfTree.leafCount;
nameoftree = typeOfTree.name;
};
var tree1 = new Tree(tree1Data);
console.log(window);
现在,这个代码创造了nameoftree
全球范围,可使用window.nameoftree
.当我们执行use strict
代码会丢出错误 。
未标记引用错误: 未定义树名
消除 " 消除 "with
语句:
with
无法使用工具例如微克- js。它们也是折旧从未来的 JavaScript 版本中删除 。
样本 :
"use strict";
var tree1Data = {
name: 'Banana Tree',
age: 100,
leafCount: 100000
};
function Tree(typeOfTree) {
var age;
var leafCount;
age = typeOfTree.age;
leafCount = typeOfTree.leafCount;
// nameoftree = typeOfTree.name;
for (var i = 0; i < 2; ++i) {
// let(leafCount = i) { /*do something*/ }
}
for (var i = 0; i < 2; ++i) {
with(leafCount = i) { /*do something*/ }
}
};
var tree1 = new Tree(tree1Data);
console.log(window);
防止重复:
当我们有重复财产时,它会提出一个例外
未标记的语法错误: 严格方式不允许以对象文字复制数据属性
"use strict";
var tree1Data = {
name: 'Banana Tree',
age: 100,
leafCount: 100000,
name:'Banana Tree'
};
几乎没有更多的人,但我需要获得更多这方面的知识。