下面的程序是什麼結果?
var foo = 1;
function bar() {
if (!foo) {
var foo = 10;
}
alert(foo);
}
bar();
結果是10;爲什麼呢,因爲計算機處理這段代碼的順序是這樣的:
function bar(){var foo;if(!foo)(foo = 10;)alert(foo)}var foo;foo = 1;bar();
這裏if(!foo),由於foo未被聲明,所以!foo的值爲true(不信可以alert試一下),所以if裏面的語句會被執行,自然彈出的是10。
那麼javascript中語句執行的順序是什麼規則呢?
- 1 語言內置:所有的作用域裏都有this和arguments;(譯者注:經過測試arguments在全局作用域是不可見的)
- 2 形式參數:函數的形式參數會作爲函數體作用域的一部分;
- 3 函數聲明:像這種形式:function foo(){};
- 4 變量聲明:像這樣:var foo;