JS严格模式

 

ES5引入的一种新的JS运行模式,在严格模式下可以改变JS历史上遗留的一些不合理的语法或运行行为(这些语法或行为不能在普通模式下直接改变,因为会造成之前的老代码出问题),JS严格模式是为了在JS中引入新特性又不致于破坏老代码而产生的解决方案。

使用字符串字面量 ‘use strict’使脚本、<script>标签或函数进入严格模式

在严格模式下:

  1. 全局变量必须先声明才能使用(包括赋值)
  2. 禁止使用with
  3. eval执行在eval作用域中(这个作用域是新增的),这样eval就不会影响全局作用域或函数作用域了
  4. this不会也不能指向全局作用域(window对象),这样构造函数不加new调用就会报错,从而不至于影响全局作用域
  5. 禁止访问arguments.caller(表示调用当前函数的函数)、arguments.callee(表示当前函数自已,如用于匿名函数递归调用),也不能通过函数名访问arguments,但对arguments的使它使用(如获取参数)是正常的!
  6. arguments不可被赋值,也不再追踪参数值的变化(arguments中的值不会变)
  7. 禁止使用delete删除变量
  8. 显式报错,而不是沉默忽略错误(如对只读属性赋值、对禁止扩展的对象添加属性、删除不能删除的属性、属性名重复、参数名重复)
  9. 不支持八进制,整数第1位是0将报错
  10. 函数不能在if{}、for{}{}内部声明(以后版本会引入块级作用域)
  11. 新增mplements, interface, let, package, private, protected, public, static, yield关键字,不能使用这些名称作为变量名,函数名、参数名等

具体可参考http://dwz.cn/A6tGP

posted @ 2018-04-28 11:45  刘兵博客  阅读(134)  评论(0编辑  收藏  举报