變數宣告提前與函式宣告提前

2022-03-18 04:40:25 字數 1120 閱讀 1056

- 變數的宣告提前

- 在全域性作用域中,使用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...