Strict Mode严格模式
1.不是用var声明的变量,在严格模式下不被通过
2.带有"eval"的操作都被禁止
<script>
"use strict" -------全局
globalVal=100; -------------会报错
var globalVal=100; ---------不会
var eval=100;
console.log("eval",eval) ------报错
function fun(){
"use strict" -------局部
}
3.创建了eval作用域
-------------------------
"use strict"
var a=100;
eval("var a=200;console.log(a)")
console.log(a)
OUTPUT:200 200
-------------------------
//"use strict"
var a=100;
eval("var a=200;console.log(a)")
console.log(a)
OUTPUT:200 100
---------------------------
4、with的禁用
var obj={a:1,b:2}
obj.a=11
obj.b=22
console.log(obj)
with(obj){
a=111
b=222
}
---------------------------
5.函数中不能有重命名的参数
function fun(a,a){
console.log(a)
}
----------------------------
6、函数中this的引用
function Person(name,age){
this.name=name;
this.age=age
}
new Person("tom",30) ------this->当前创建的实例对象
Person("jack",35) ------>this->window
fun(1,2)
----------------------
7.delete删除操作
var a=100
console.log(delete a)
console.log(a)
delete只能删除没有用var定义的全局变量,开启严格模式后,都不能用
-----------------------
8、arguments不追踪函数参数的变化
function fun(x){
console.log(arguments[0])
x=2
console.log(arguments[0])
}
fun(1)
</script>