liuyu00 / web-interview

4 stars 0 forks source link

[js]说说严格模式的限制 #34

Open liuyu00 opened 4 years ago

liuyu00 commented 4 years ago

严格模式主要有以下限制:

  1. 变量必须声明后再使用
  2. 函数的参数不能有同名属性,否则报错
  3. 不能使用with语句
  4. 不能对只读属性赋值,否则报错
  5. 不能使用前缀0表示八进制数,否则报错
  6. 不能删除不可删除的属性,否则报错
  7. 不能删除变量delete prop,会报错,只能删除属性delete global[prop]
  8. eval不会在它的外层作用域引入变量
  9. eval和arguments不能被重新赋值
  10. arguments不会自动反映函数参数的变化
  11. 不能使用arguments.callee
  12. 不能使用arguments.caller
  13. 禁止this指向全局对象
  14. 不能使用fn.caller和fn.arguments获取函数调用的堆栈
  15. 增加了保留字(比如protected、static和interface)
  16. 设立"严格模式"的目的,主要有以下几个:
  17. 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
  18. 消除代码运行的一些不安全之处,保证代码运行的安全;
  19. 提高编译器效率,增加运行速度;
  20. 为未来新版本的Javascript做好铺垫。

注:经过测试IE6,7,8,9均不支持严格模式。