JS严格模式
Posted 刘兵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS严格模式相关的知识,希望对你有一定的参考价值。
ES5引入的一种新的JS运行模式,在严格模式下可以改变JS历史上遗留的一些不合理的语法或运行行为(这些语法或行为不能在普通模式下直接改变,因为会造成之前的老代码出问题),JS严格模式是为了在JS中引入新特性又不致于破坏老代码而产生的解决方案。
使用字符串字面量 ‘use strict’使脚本、<script>标签或函数进入严格模式
在严格模式下:
- 全局变量必须先声明才能使用(包括赋值)
- 禁止使用with
- eval执行在eval作用域中(这个作用域是新增的),这样eval就不会影响全局作用域或函数作用域了
- this不会也不能指向全局作用域(window对象),这样构造函数不加new调用就会报错,从而不至于影响全局作用域
- 禁止访问arguments.caller(表示调用当前函数的函数)、arguments.callee(表示当前函数自已,如用于匿名函数递归调用),也不能通过函数名访问arguments,但对arguments的使它使用(如获取参数)是正常的!
- arguments不可被赋值,也不再追踪参数值的变化(arguments中的值不会变)
- 禁止使用delete删除变量
- 显式报错,而不是沉默忽略错误(如对只读属性赋值、对禁止扩展的对象添加属性、删除不能删除的属性、属性名重复、参数名重复)
- 不支持八进制,整数第1位是0将报错
- 函数不能在if{}、for{}等{}内部声明(以后版本会引入块级作用域)
- 新增mplements, interface, let, package, private, protected, public, static, yield关键字,不能使用这些名称作为变量名,函数名、参数名等
具体可参考http://dwz.cn/A6tGP
以上是关于JS严格模式的主要内容,如果未能解决你的问题,请参考以下文章