Skip to content

Latest commit

 

History

History
31 lines (25 loc) · 1.66 KB

4.0.2 js 严格模式 'use strict'.md

File metadata and controls

31 lines (25 loc) · 1.66 KB

js 严格模式 'use strict'

  • 设立"严格模式"的目的,主要有以下几个:
    • 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
    • 消除代码运行的一些不安全之处,保证代码运行的安全;
    • 提高编译器效率,增加运行速度;
    • 为未来新版本的Javascript做好铺垫。

严格模式中的变化

  • 严格模式下无法再意外创建全局变量: 严格模式中意外创建全局变量被抛出错误替代
  • 严格模式会使引起静默失败(silently fail,注:不报错也没有任何效果)的赋值操抛出异常
  • 在严格模式下, 试图删除不可删除的属性时会抛出异常
  • 在Gecko版本34之前,严格模式要求一个对象内的所有属性名在对象内必须唯一
  • 严格模式要求函数的参数名唯一
  • 严格模式禁止八进制数字语法
  • ECMAScript 6中的严格模式禁止设置primitive值的属性

简化变量的使用

  • 严格模式禁用 with.
  • 严格模式下的 eval 不再为上层范围(surrounding scope,注:包围eval代码块的范围)引入新变量.
  • 严格模式禁止删除声明变量
  • 严格模式让arguments和eval少了一些奇怪的行为
  • 严格模式下,参数的值不会随 arguments 对象的值的改变而变化
  • 不再支持 arguments.callee。正常模式下,arguments.callee 指向当前正在执行的函数。(这意味着,你无法在匿名函数内部调用自身了。)

参考