這只是一個好奇心。但這是我想知道的。Javascript函數級範圍
我知道,JavaScript 1.7支持塊與let
關鍵字範圍確定。
但是爲什麼Javascript最初被設定爲function-level
而不是block scope
?
這只是一個好奇心。但這是我想知道的。Javascript函數級範圍
我知道,JavaScript 1.7支持塊與let
關鍵字範圍確定。
但是爲什麼Javascript最初被設定爲function-level
而不是block scope
?
一個合理的猜測(但只是一個猜測)可能是該語言的最早迭代沒有var
關鍵字,但依賴於它被賦值時隱式創建的變量。對於簡單的腳本語言來說,這是很常見的 - 他們中的許多人在成熟並開始用於大型項目時不得不改進某些顯式聲明機制。在這個假設下,爲了讓這樣的代碼
if(bla bla bla) {
a = 24 ;
} else {
a = blop.blop();
}
alert(a);
它不會做,如果的a
隱含的聲明是由大括號而不是在警報可見被困。因此,功能級範圍。
現在想象一下,到時候var
加入,功能級範圍的假設已經成爲盤踞在規範和實現語言的...
@Markholm我喜歡猜測努力:) – user278064
爲什麼不呢?我們應該如何知道最初的設計師和實施者在想什麼? – delnan
因爲他們必須從某個地方開始? – deceze
@deceze因此,從你開始的地方開始並不重要。重要的是你開始! – user278064