目录
首先我们要知道js中es3.0与es5.0冲突的部分使用的是es3.0的部分。当严格模式启动时,这部分便使用的是es5.0的部分。
启动方式
在js开头或函数开头使用字符串'use strict',则以字符串'use strict'开头的代码块是使用的严格模式。
限制内容
不能使用
with(obj){}
因为改变作用域链,降低效率所以不使用。改变括号中的作用域,把obj作用域链AO放在括号中,即在括号中访问变量name则优先访问为obj.name。
arguments.callee
arguments.callee函数自身引用,callee是arguments的属性。
func.caller
func.caller,func为函数名,func.caller写在func函数内,否则返回null,表示在该函数运行时的环境,如果其他函数体内运行了该函数,则返回其他函数内容,window下则返回null。
eval()
改变作用域,不使用,可以将括号中的字符串当代码使用。
改变
未经申明直接使用变量会报错
es3中是暗示全局变量
this默认为undefined,不为window
全局范围this还是指向window,this可以被赋为原始值,es3会包装为包装类。es5中不变,依然为原始值。
函数中重复的参数和对象中重复的属性名会报错
es3中不会报错。
使用前缀0表示八进制会报错
删除不可删除属性会报错
eval和arguments不能被重新赋值