Skip to content

ES6严格模式

🕒 Published at:

在脚本的第一行或者函数体的第一行写'use strict';可以进入严格模式

script type="module" 默认就是严格模式

  1. argument.caller、argument.callee、with不能使用
  2. with语句不能使用
  3. 函数内部的this为undefined
  4. 变量必须使用声明关键字声明
  5. 严格模式下修改this指向,如果是原始值,则this也是原始值,在非严格模式下会自动使用包装类转化为对象
  6. 函数的形参名不能重复
  7. eval函数有独立的作用域
  8. 对只读属性赋值,会报错;删除不可配置的属性,会报错;对一个只设置了取值器的属性赋值会报错;对禁止扩展的对象添加新的属性,会报错
  9. 严格模式下,使用eval或者arguments作为标识名会报错
  10. 禁止八进制的前缀0表示法
  11. 严格模式下无法删除变量,如果使用delete命令删除一个变量,会报错。只有对象的属性,且属性的描述对象的configurable属性设置为true,才能被delete命令删除
  12. arguments 不再追踪参数的变化
  13. 非函数代码块不得声明函数
  14. 使用保留字作为变量名会报错
  15. ==在ES6严格模式下会开启尾调用优化,正常模式尾调用优化默认是关闭的==

在Node.js里面如果不用严格模式,函数里的this默认是指向全局对象global,如果用的话是函数里的this是undefined