浅谈JavaScript严格模式

来源:互联网 发布:阿里云服务器上传网站 编辑:程序博客网 时间:2024/05/20 00:10

除了正常运行模式,ECMAscript 5添加第二种运行模式:”严格模式”(strict mode)。顾名思义,这种模式使得JavaScript在更合理,更安全、更严禁的条件下执行。

进入严格模式的标识为”use strict”

①严格模式有两种调用方法
1) 将”use strict”放在脚本文件的第一行,指定整个脚本都以严格模式运行。
2)将”use strict”放在函数体的第一行,指定函数以严格模式运行。

②严格模式与正常模式的不同
1)正常模式中如果一个变量未经证明就赋值,会被认为是全局变量,而严格模式中,全局变量必须显示声明。
2)正常模式只有全局作用域和函数作用域,而严格模式下增加了eval()作用域,严格模式下eval语句本身就是一个作用域,它所生成的变量只能用于eval内部。
3)严格模式禁止使用with语句,因为with语句无法再编译时就确定属性属于哪个对象。
4)严格模式禁止使用arguments.callee,意味着无法再匿名函数内调用自身。
5)严格模式限制arguments对象:不允许对arguments赋值,且arguments不再追踪参数的变化。
6)严格模式禁止this关键字指向全局对象。
7)严格模式下删除无法删除的属性(configurable属性为false的属性)会报错。
8)严格模式下对只读属性(只能指定getter方法的属性)赋值会报错。
9)严格模式对象不能有重名属性,正常模式取最后一个值。
10)严格模式函数不能有重名参数,正常模式可以通过arguments[i]读取。
11)严格模式禁止八进制表示法,整数第一位为0将会报错。
12)严格模式函数必须声明在顶层。

③为什么用严格模式:
1)消除JavaScript语法的一些不合理,不严谨之处,减少一些怪异行为。
2)消除代码运行的一些不安全之处,保证代码运行的安全。
3)提高编译器效率,增加运行速度。
4)为未来新版本的JavaScript做好铺垫。

原创粉丝点击