浏览器:基于es3.0 + es5.0新增的方法 执行的
启用es5.0严格模式,那么es3.0和es5.0产生冲突的部分就是用es5.0否则会用es3.0
"use strict";//启用es5.0严格模式
“use strict”
- 不再兼容
es3
的一些不规则语法。使用全新的es5规范 - 两种方法:
- 全局严格模式
- 局部函数内严格模式(推荐)
- 就是一行字符串,不会对不兼容严格模式的浏览器产生影响
- 不支持
with
、arguments.callee
、func.caller
,变量赋值前必须声明,局部this必须被赋值(Person.call(null/undefined)赋值什么就是什么),拒绝重复属性和参数//with 会改变作用域链,新增一条作用域链,优先级最高 影响性能 var name = 'zhang'; demo.prototype.laseName = "deng" function demo (){} var obj = new demo(); function test(){ var name = 'wang'; var age = 123; var lastName = "last" with(obj){ console.log(name);//'wang' console.log(laseName);//deng console.log(age);//123 } }
"use strict" //this function test(){ console.log(this) } test();//undefined new test();//test {} test.call(123);//123 非严格模式时123变成包装类输出