顾名思义:严格模式(strict mode)就是在更严格的条件下执行,这是相比普通模式而言,栗子:普通模式下,变量不经过声明也是可以使用的,但在严格模式下,你需要乖乖的声明它的存在
Why?
严格模式的出现是为了消除Javascript语法的一些不合理、不严谨之处,消除代码运行的一些不安全之处,保证代码运行的安全,提高编译器效率,增加运行速度。"严格模式"体现了Javascript更合理、更安全、更严谨的发展方向。
同样的代码,在"严格模式"中,可能会有不一样的运行结果;一些在"正常模式"下可以运行的语句,在"严格模式"下将不能运行。掌握这些内容,有助于更细致深入地理解Javascript,让你变成一个更好的程序员。----菜鸟教程
总之,严格模式要比普通模式更具有优势,更加合理,同时也减少了开发人员的“自由”,但以自由为代价换来程序稳定性,安全性的提高,我想这是非常值得的
How?
如何来使用严格模式呢?
只需要在开始处(不仅仅包括JS文件的开头哦,甚至如果你只是想在某个函数作用域内使用严格模式也是可以的)加上指令:“use strict”,他是在JavaScript 1.8.5 (ECMAScript5) 中新增的,如果在以往的旧版本中加上该指令,会被忽略掉,栗子栗子:
"use strict"
var x = 5
console.log("x: ", x)
运行结果:
x: 5
"use strict"
x = 5
console.log("x: ", x)
运行结果:
Uncaught ReferenceError: x is not defined at XXX.html:行数
//普通模式下
x = 5
console.log("x: ", x)
运行结果:
x: 5
下面的是函数中严格模式的一些栗子
//普通模式下
myFunc()
function myFunc(){
y = 10
console.log("y: ", y)
}
运行结果:
y: 10
"use strict"
myFunc()
function myFunc(){
y = 10
console.log("y: ", y)
}
运行结果:
Uncaught ReferenceError: y is not defined
at myFunc (JS基础.html:15)
at JS基础.html:13
"use strict"
myFunc()
function myFunc(){
var y = 10
console.log("y: ", y)
}
运行结果:
y: 10
严格模式中还有很多其他限制:
- 不允许删除变量和函数
"use strict"
var x = 10
delete x
报错:
Uncaught SyntaxError:
Delete of an unqualified identifier in strict mode.
- 不允许使用八进制
- 不允许使用转义字符
.
.
.