慕课网《JavaScript深入浅出》课程笔记
严格模式
修复JavaScript上部分不足,提供更强错误检查能力,语法更加严谨
function func(){
‘use strict’;
} //函数内设置严格模式
或
‘use strict’;
function func(){
} //整体使用严格模式
严格模式下的新变化
1。不允许使用with
使用with方法后会报syntaxerror的错误
2。不允许未声明的变量赋值
3。arguments变为参数的静态副本
!function(a){
arguments[0] = 100;
console.log(a);
}(1);
//100
这里要注意,假如不传参数,那么结果就是undefined
!function(a){
'use strict';
arguments[0] = 100;
console.log(a);
}(1);
//1
arguments变为参数的静态副本,不会对原来的arguments产生影响
!function(a){
'use strict';
arguments[0].x = 100;
console.log(a.x);
}({x:1});
//100
4。delete参数、函数名以及不可配置的属性会报错
5。对象字面量重复属性名报错
!function(){
'use strict';
var obj = {x:1,x:2};
}();
6。禁止八进制字面量
!function(){
'use strict';
console.log(0123);
}();
7。eval、arguments变为关键字,不能作为变量、函数名
8。eval独立作用域
!function(){
'use strict';
eval('var evalVal = 2;');
console.log(typeof evalVal);
}();
//undefined