最近,我通过克罗福德 查了一些JavaScript代码JSLint JSLint,并给出了以下错误:
第1行第1字符1:缺少“严格使用”声明的问题。
在做一些搜索时,我意识到有些人加了"use strict";
输入 JavaScript 代码。 一旦我添加了该语句, 错误就不再出现。 不幸的是, Google 并未披露此字符串语句背后的大部分历史。 当然, 它肯定与浏览器如何解读 JavaScript 有关, 但我不知道效果会是什么 。
那么,什么是"use strict";
关于它的意义是什么,它是否仍然相关?
当前浏览器中的任意浏览器响应"use strict";
字符串, 还是用于未来用途 ?
JavaScript由于浏览器战争和管理不善而匆忙设计和实施,导致许多设计决定不善,不直观的语法和混乱的语义被混为一谈。 严格模式旨在修正其中的一些错误。
但是,在不创造替代解释的情况下纠正这些错误会打破后向兼容性。所以,"use strict"
指令规定对代码的替代解释,同时将其告知程序员。
例如,this
关键字在方法定义中指向对象,例如this
或self
以其他语文提供。
let o = {
name: 'John Doe',
sayName: function(){
console.log(this.name);
}
};
o.sayName(); // 'John Doe'
this
方法上下文外没有目的,但所有 JavaScript 函数都具有this
关键字是否为方法 :
function run() {
console.log(this);
}
run(); // Window
给this
确定全球对象,因为全球对象在范围中已经存在,所以它毫无意义,没有意义。
严格方式this
在一个全球职能中,我们决心作出不确定的决定,这正是我们所期望的。
"use strict"
function run() {
console.log(this);
}
run(); // undefined
有些错误即使严格的方式也无法固定,因为语法对旧浏览器应该有效,因为它们忽略了"strict mode"
这是按设计设计的指令。