ES5 Strict作为一种完全静态范围的语言有什么好处?

时间:2012-10-01 16:38:43

标签: javascript ecmascript-5 specifications

与默认语言(ES5默认)不同,JavaScript的严格模式(ES5严格)提供了限制,使语言完全静态作用域。由于存在以下违规行为,默认语言不是完全静态范围的:

  • 对未声明变量的赋值动态创建隐含的全局变量,
  • with语句(JavaScript中的对象是动态的,因此JS引擎在评估之前无法知道哪些名称是对象的属性,以及哪些名称绑定到环境中),
  • eval调用可以动态地为环境添加名称,
  • delete运算符可以动态删除环境中的名称(适用于隐含的全局变量,以及通过eval调用添加的变量)。

来源:http://www.youtube.com/watch?v=Kq4FpMe6cRs&t=42m48s

我可以看到完整的静态作用域有助于提高性能,因为JS引擎可以在评估之前绑定变量(或至少大部分)(在词法环境中的名称)。此外,我猜,该程序变得更具可读性,并且不太可能引起混淆。

但是,我对完全静态范围的好处的理解并不像我希望的那样完整。

0 个答案:

没有答案