默认情况下实现本地范围的成本

时间:2011-08-01 14:01:36

标签: javascript scope lua

众所周知,在某些语言中(最着名的例子是javascript),默认情况下变量是全局范围的。这意味着如果想要声明局部变量,他应该写var, local, my或其他什么。

我从来没有想过这个的实施成本,但事实证明它不仅仅是传统问题。例如,选中this链接。我的问题是 - 默认情况下,本地默认的默认架构比全局范围更昂贵。只是有点,不知道,事先选择排序需要的交换少于bubblesort,就这样“预先”。

此外,如果有人会编辑此问题以添加适当的标签,我将不胜感激。我只是不知道哪一个更合适。

2 个答案:

答案 0 :(得分:3)

可以找到Lua语言更好(默认为本地或默认为全局)的某些要点的摘要on this wiki page。也许默认情况下都不是最好的答案,但我们程序员想要节省一些打字;)

来自维基页面的一些引用:

  • “本地默认是错误的。默认情况下全局也可能是错误的,[但]默认情况下解决方案不是本地的。” (Lua的建筑师Roberto Ierusalimschy)
  • “[当前的局部变量范围规则]是Ruby中最大的设计缺陷。” (Yukihiro Matsumoto,Ruby设计师)
  • “我不喜欢词汇的隐含声明,因为它倾向于打败它们的主要用途,即捕捉错别字......声明应该看起来像声明......我相信声明与我的正确的霍夫曼编码。“ (Larry Wall,Perl Designer)

答案 1 :(得分:2)

在编译时,默认本地和默认全局的成本是相同的。当您找到尚未看到的名称时,您仍然必须完全遍历所有活动局部变量的列表。在运行时,通常可以更快地访问局部变量。