a. "use strict";
不再兼容es3的一些不规则语法。使用全新的es5规范
两种用法:
- 全局严格模式
- 局部函数内严格模式(推荐)
特点:
就是一行字符串,不会对不兼容严格模式的浏览器产生影响,不支持width、arguments、callee、caller
变量复制前必须声明
变量必须定义再使用
普通函数中的this指向undefined
函数的形参不准重名
局部this必须被赋值(Person.call(null/undefined) 赋值什么就是什么),拒绝重复属性和参数
b.es3.0和es5.0产生冲突的部分:
es5.0严格模式下:es3.0和es5.0产生冲突的部分就是用es5.0;反之用es3.0
示例1:全局严格模式
<script>
//es5.0严格模式下
"use strict";
function test() {
console.log(arguments.callee);
}
test();
</script>

示例2:局部函数内严格模式(推荐)
<script>
function demo() {
console.log(arguments.callee);
}
demo();
function test() {
//es5.0严格模式下
"use strict";
console.log(arguments.callee);
}
test();
</script>

c.width()
<script>
var obj = {
name: "obj",
}
var name = 'window';
function test() {
var name = 'score';
//with() 里面的代码按照正常的顺序执行,但是在width的()里添加对象的话
//则会将这个对象当做width要执行的代码体的作用域链的最顶端,也就是会
//改变作用域链
with(obj) {
console.log(name); //也就是这里的name会指向“obj"
}
}
test();
</script>

命名空间的用法:
<script>
var org = {
dp1: {
jc: {
name: 'abc',
age: 15
},
lin: {
name: 'ced',
age: 444
}
},
dp2: {
}
};
with(org.dp1.jc) {
console.log(name);
}
with(org.dp1.lin) {
console.log(name);
}
</script>

最后
以上就是大气秀发最近收集整理的关于es5--严格模式的全部内容,更多相关es5--严格模式内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复