代碼的運行分兩個階段
-
解析(編譯)階段
先進行代碼的語法檢查,然後是變量和語法的聲明
-
運行階段
變量的賦值,代碼流程的執行
案例說明
在瀏覽器中運行下面的代碼,會在console中打印undefined,
<script type="text/javascript">
console.log(a);
var a = 3;
</script>
而執行下面的代碼時,會報錯
<script>
console.log(a);
//var a = 3;
</script>
因爲代碼先編譯,編譯時a聲明瞭,但沒賦值;再執行時,是順序結構執行的,先執行了console.log(a);後賦值,所以註釋掉var a = 3;時,執行結果由undefined變爲報錯。
所以代碼
<script type="text/javascript">
console.log(a);
var a = 3;
</script>
可理解成
<script type="text/javascript">
var a;
console.log(a);
a = 3;
</script>