js严格模式(use strict)
阅读MDN和查阅资料总结
严格模式(ECMAscript5 新增)的目的
- 消除 JavaScript 语法中不合理、不严谨的用法。
- 消除代码运行的一些安全隐患。
- 提高编译器效率,提升程序运行速度。
- 为未来新版本的规范化做好铺垫。
使用严格模式
<srript>
"use strict"
......
</script>
注意: 为整个脚本文件开启严格模式,会存在合并严格模式与非严格模式的问题。
function strict() {
'use strict';
function nested() {
return "And so am I!";
}
return "Hi! I'm a strict mode function! " + nested();
}
function notStrict() {
return "I'm not strict.";
}
严格模式的使用
- 变量必须声明后再赋值,禁止删除声明变量
- 不能有重复的参数名,函数的参数也不能有同名属性
- 严禁使用with语句
- 不能对只读属性赋值
- 不能使用八进制数,即前缀0
- 不能删除不可删除的属性
- eval不会在它的外层作用域引入变量。
- eval和arguments不能被重新赋值
- arguments不会自动反应函数的变化
- 不支持arguments.callee
- 不能使用arguments.caller
- 禁止this指向全局对象
- 不能使用 fn.caller和fn.arguments获取函数调用的堆栈
- 增加了一些保留的关键字
后续增加
|