这只是一种好奇心。但这是我想知道的事情。
我知道Javascript 1.7支持使用let
关键字进行块范围设定。
但为什么Javascript最初使用function-level
范围代替block scope
?
答案 0 :(得分:1)
一个合理的猜测(但只是猜测)可能是该语言最早的迭代没有var
关键字,但依赖于在分配时隐式创建的变量。这对于简单的脚本语言来说很常见 - 他们中的许多人在成熟并开始用于大型项目时必须改进一些显式声明机制。在这个假设下,为了代码如
if( bla bla bla ) {
a = 24 ;
} else {
a = blop.blop();
}
alert(a);
如果a
的隐式声明被大括号捕获而不是在警报中可见,则不会这样做。因此,功能级范围。
现在想象一下,在添加var
时,功能级范围的假设已经在语言的规范和实现中变得根深蒂固......