js中沒有塊級作用域
for(var i=0;i<10;i++){
doSomething(i);}
alert(i); // output :10,why?
上述代碼運行後會返回10,爲什麼呢?如果是同樣的java或是c#代碼,則不會是10,可能會提示運行錯誤,因爲i只存在於for循環體重,在運行完for循環後,for中的所有變量就被銷燬了。而在javascript中則不是這樣的,在for中的變量聲明將會添加到當前的執行環境中(這裏是全局執行環境),因此在for循環完後,變量i依舊存在於循環外部的執行環境。因此,會輸出10。