使用"use strict" 的目的是指定代码在严格条件下执行。
严格模式通过在脚本或函数的头部添加 "use strict"; 表达式来声明。
不允许使用未声明的变量。
1
2
3
4
5
|
"use strict" ; myFunction(); function myFunction() { y = 3.14; // 报错 (y 未定义) } |
在函数内部声明是局部作用域 (只在函数内使用严格模式):
1
2
3
4
5
6
|
x = 3.14; // 不报错 myFunction(); function myFunction() { "use strict" ; y = 3.14; // 报错 (y 未定义) } |
不允许删除变量或对象
1
2
3
|
"use strict" ; var x = 3.14; delete x; // 报错 |
不允许删除函数。
1
2
3
|
"use strict" ; function x(p1, p2) {}; delete x; // 报错 |
不允许变量重名:
1
2
|
"use strict" ; function x(p1, p1) {}; // 报错 |
不允许使用八进制:
1
2
|
"use strict" ; var x = 010; // 报错 |
不允许使用转义字符:
1
2
|
"use strict" ; var x = \010; // 报错 |
不允许对只读属性赋值:
1
2
3
4
|
"use strict" ; var obj = {}; Object.defineProperty(obj, "x" , {value:0, writable: false }); obj.x = 3.14; // 报错 |
不允许删除一个不允许删除的属性:
1
2
|
"use strict" ; delete Object.prototype; // 报错 |
变量名不能使用 "eval" 字符串:
1
2
|
"use strict" ; var eval = 3.14; // 报错 |
变量名不能使用 "arguments" 字符串:
1
2
|
"use strict" ; var arguments = 3.14; // 报错 |
禁止this关键字指向全局对象
为什么使用严格模式: