程式執行前,都會先找到var宣告的變數和function宣告的函式。
一、var宣告的變數
程式結果
console.log(a);
var a=10;
console.log(a);
//undefined
// 10
var a=10; 簡寫 被翻譯為 var a; a=10; 宣告提前 ——>
宣告 賦值
所以第乙個輸出a時,a只宣告沒有賦值所以是undefined; 第二次輸出時,a已經被賦值為10,所以輸出10.
二、function宣告的函式
宣告方式:
function 函式名()
fun();
function fun()
fun();
//2//2
這個程式有function宣告的函式,發生宣告提前——>
兩個同名函式遇到了一起。但是js是解釋執行,讀一行執行一行,後督導的同名內容會覆蓋先讀到的同名內容,所以只剩下第二個函式,所以兩次呼叫函式都輸出2.
變數宣告提前與函式宣告提前
變數的宣告提前 在全域性作用域中,使用var關鍵字宣告的變數會在所有的 執行之前被宣告,但是不會賦值。所以我們可以在變數宣告前使用變數。但是不使用var關鍵字宣告的變數不會被宣告提前。在函式作用域中,也具有該特性,使用var關鍵字宣告的變數會在函式所有的 執行前被宣告,如果沒有使用var關鍵字宣告變...
JS宣告提前
js中的宣告提前,變數宣告提前,函式宣告提前,以及宣告提前的順序 console.log a a var a functiona console.log a a 6 a 四個輸出分別是什麼呢?我們來除錯一下,執行到 a 6時輸出如下 最後乙個a 報錯。接下來我們來分析一下原因 一 什麼是變數宣告提前...
變數宣告提前
js中只有2種作用域 全域性作用域和函式作用域,沒有塊級作用域。迴圈內定義的變數,相當於定義在迴圈所在的空間,出了迴圈仍可繼續使用。console.log temp 不會報錯,迴圈體沒有塊級作用域,迴圈內的變數相當於直接宣告在當前 塊的最前面 for var i 0 i 10 i 宣告提前 hois...