javascript中的严格模式
严格模式:
不允许使用with
1 所有变量必须声明,赋值给未声明的变量报错,而不是隐式创建全局变量。
2 eval中的代码不能创建eval所在作用域下的变量、函数。而是为eval单独创建一个作用域,并在eval返回时丢弃。
3 函数中得特殊对象arguments是静态副本,而不像非严格模式那样,修改arguments或修改参数变量会相互影响。
4 删除configurable=false的属性时报错,而不是忽略
5 禁止八进制字面量,如010(八进制的8)
6 evel,arguments变为关键字,不可作为变量名、函数名
7 一般函数调用时(不是对象的方法调用,也不使用apply/call/bind等修改this)this指向null,而不是全局对象。若使用apply/call,当传入null或undefined时,this将指向null或undefined,而不是全局对象。
8 试图修改不可写属性(writable=false),在不可扩展的对象上添加属性时报TypeError,而不是忽略。
9 arguments.caller,arguments.callee被禁用