JavaScript-11子集和扩展

JavaScript-11子集和扩展

Js的精华不包括什么?

  • 体长使用函数定义表达式而不是函数定义语句
  • 循环体和条件分支都是用花括号括起来,不允许再循环体和条件分支中只包含一条语句时省略花括号
  • 不包含逗号运算符,位运算符以及++和—
  • 不包含==和!= ,这样会进行类型转换,推荐\=\=\=和!\=\=
  • var 语句只能出现在函数体的顶部,将所有的变量声明写在一条单独的var语句中
  • 禁止使用全局变量

子集的安全性

  • 禁用eval()和Function()构造函数,无法做静态分析
  • 禁止使用this关键字,因为函数可以通过this访问全局对象
  • 禁止使用with,增加静态代码的难度
  • 禁止使用某些全局变量
    • 完全禁止window或document对象
    • 提供一个外观面板或代理
  • 禁止使用某些属性和方法。如caller和callee,函数的call()和apply()方法,以及constructor和prototype,非标准的属性_proto_
  • 静态分析可以有效地防止带有点 . 运算符的属性存储表达式去独写特殊属性。方括号[]无法做静态分析,安全子集通常精致使用[],除非方括号内是一个数字或字符串直接量
-------------本文结束,感谢您的阅读-------------