【问题标题】:Javascript function-level scope [closed]Javascript函数级范围[关闭]
【发布时间】:2011-08-30 15:02:16
【问题描述】:

这只是一个好奇心。但这是我想知道的。

我知道 Javascript 1.7 支持带有 let 关键字的块范围。

但是为什么 Javascript 最初设计的范围是 function-level 而不是 block scope?

【问题讨论】:

  • 为什么不呢?我们应该如何知道最初的设计者和实施者的想法?
  • 因为他们必须从某个地方开始?
  • @deceze 所以从哪里开始并不重要。重要的是你开始!
  • 您可以直接给 Douglas Crockford 发电子邮件:douglas@crockford.com 并询问他。
  • 为什么是道格?我更倾向于给语言的创造者 Brendan Eich 发电子邮件(大约 2 周内)en.wikipedia.org/wiki/Brendan_Eich

标签: javascript scope language-design


【解决方案1】:

一个合理的猜测(但只是一个猜测)可能是该语言的最早迭代没有 var 关键字,而是依赖于在分配变量时隐式创建的变量。这对于简单的脚本语言来说是很常见的——当它们成熟并开始用于大型项目时,它们中的许多必须改进一些显式的声明机制。在这个假设下,为了代码如

if( bla bla bla ) {
  a = 24 ;
} else {
  a = blop.blop();
}
alert(a);

如果a 的隐式声明被大括号捕获而不是在警报中可见,则不会这样做。因此,函数级范围。

现在想象一下,在添加 var 时,函数级范围的假设已经在语言的规范和实现中根深蒂固......

【讨论】:

  • @Markholm 我喜欢猜测:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 2012-10-17
  • 2013-01-23
相关资源
最近更新 更多