ECMAscript 5添加了“严格模式”。一旦使用严格模式,则不严谨的语法代码将不再被支持。
<script>//1
//在js代码的顶部加上这么一句,声明严格模式的使用
"use strict"; //注意:不能大写
function testFun1 () {
//此处也为严格模式
}
</script>
<script> //2
//此作用域由于没有声明“严格模式”,因此此作用域的代码按“非严格模式”编译
str = "码农3号"; //不报错
</script>
<script> //3
function testFun2 () {
"use strict"; //只对该函数作用域内的代码有效
}
//此处依然为"非严格模式"
</script>
此处第一组script标签内的代码是使用了“严格模式”,而第二组script标签内的代码不是严格模式。因为每一组script标签就是一个作用域,而严格模式的声明只对所在的作用域生效。
注意
变量必须先声明,再使用
functiontest(){
"use strict";
foo='bar';// Error
}
不能对变量执行delete操作
var foo="test";
functiontest(){}
deletefoo;// Error
deletetest;// Error
functiontest2(arg){
deletearg;// Error
}
对象的属性名不能重复
{foo:true,foo:false}// Error
禁用eval()
函数的arguments参数
setTimeout(functionlater(){// do stuff...setTimeout( later,1000);},1000);
禁用with(){}
不能修改arguments
不能在函数内定义arguments变量
不能使用arugment.caller和argument.callee。因此如果你要引用匿名函数,需要对匿名函数命名
网友评论