- 變數的宣告提前
- 在全域性作用域中,使用var關鍵字宣告的變數會在所有的**執行之前被宣告,但是不會賦值。
所以我們可以在變數宣告前使用變數。但是不使用var關鍵字宣告的變數不會被宣告提前。
- 在函式作用域中,也具有該特性,使用var關鍵字宣告的變數會在函式所有的**執行前被宣告,
如果沒有使用var關鍵字宣告變數,則變數會變成全域性變數
- 函式的宣告提前
- 在全域性作用域中,使用函式宣告建立的函式(function fun(){}),會在所有的**執行之前被建立,
也就是我們可以在函式宣告前去呼叫函式,但是使用函式表示式(var fun = function(){})建立的函式沒有該特性
- 在函式作用域中,使用函式宣告建立的函式,會在所有的函式中的**執行之前就被建立好了。
例子1.不管用不用var宣告的變數都會輸出:
2.用var修飾的變數會進行變數宣告提公升,但是不會賦值;而不用var修飾的變數不會進行變數提公升
3.function fun(){},會在所有的**執行之前被建立,而var fun = function(){}建立的函式沒有該特性
總結:管它什麼鬼的變數提公升函式提公升,只要先定義,後面再執行就好啦!!
變數宣告提前
js中只有2種作用域 全域性作用域和函式作用域,沒有塊級作用域。迴圈內定義的變數,相當於定義在迴圈所在的空間,出了迴圈仍可繼續使用。console.log temp 不會報錯,迴圈體沒有塊級作用域,迴圈內的變數相當於直接宣告在當前 塊的最前面 for var i 0 i 10 i 宣告提前 hois...
js 變數 函式宣告提前問題
1 變數宣告提前 看 function 以上 報錯 referenceerror a is not defined,這很好理解 根本就沒宣告當然報錯啦,往下看 function 以上 對於直譯器來說是下面這樣的,所以沒有報錯,且輸出了undefined function 再來看一中情況 functi...
js中變數宣告與變數提前
變數宣告 通過var表明變數的型別與名字,但並未賦值,如 var a 變數初始化 即為a賦值,如 a 1 使用變數步驟 a.宣告 b.賦值 3.呼叫 方式一 宣告和賦值不分離 var str 宣告和賦值不分離 console.log str 結果 宣告和賦值不分離 方式二 宣告和賦值分離 var s...