严格模式:
1、必须在程序的顶部声明
2、声明变量,必须先声明,必须有关键字
3、严格模式下不能删除变量
4、函数里面的this指向window
‘use strict’; //必须写在第一行 如果没有写在第一行 此语句没有作用
name=‘小花’; // 变量名不能用name 如果用name 严格模式不起作用
console.log(name); //小花 如果变量名用name 严格模式不起作用
‘use strict’; //必须写在第一行 如果没有写在第一行 此语句没有作用
age=12; // 变量名不能用name 如果用name 严格模式不起作用
console.log(age); //报错
非严格模式下的eval作用域
var b=10;
eval(“var b=50”);
console.log(b); //b=50 非严格模式下 之前的b被覆盖
严格模式下的eval作用域
‘use strict’;
var a=10;
eval(“var a=20”);
console.log(a); //严格模式下 a=10,后面的不会覆盖前边的
严格模式下的this
function num(){
return this;
}
console.log(num()); //严格模式下 undefined 非严格模式下 指向的是window。
严格模式的原因:
1、保证代码的运行安全
2、提高编译效率,增加运行速度
3、为未来的新版本js做好铺垫
4、消除js语法的一些不合理,不严谨之处,减少一些怪异行为