2011-08-30 92 views
0

這只是一個好奇心。但這是我想知道的。Javascript函數級範圍

我知道,JavaScript 1.7支持塊與let關鍵字範圍確定。

但是爲什麼Javascript最初被設定爲function-level而不是block scope

+2

爲什麼不呢?我們應該如何知道最初的設計師和實施者在想什麼? – delnan

+0

因爲他們必須從某個地方開始? – deceze

+0

@deceze因此,從你開始的地方開始並不重要。重要的是你開始! – user278064

回答

1

一個合理的猜測(但只是一個猜測)可能是該語言的最早迭代沒有var關鍵字,但依賴於它被賦值時隱式創建的變量。對於簡單的腳本語言來說,這是很常見的 - 他們中的許多人在成熟並開始用於大型項目時不得不改進某些顯式聲明機制。在這個假設下,爲了讓這樣的代碼

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

它不會做,如果的a隱含的聲明是由大括號而不是在警報可見被困。因此,功能級範圍。

現在想象一下,到時候var加入,功能級範圍的假設已經成爲盤踞在規範和實現語言的...

+0

@Markholm我喜歡猜測努力:) – user278064