var a = 1; function foo(){ if (!a) { var a = 2;//儘管不會走這個分支語句,可是這個聲明賦值語句,會致使a的值變成2(由於在編譯的時候var a;這條語句會在if語句以前執行) } alert(a);// 2 } foo();