什麼是聲明,什麼是定義?函數
var:例如咱們創建一個
var a = 10;
var a;這就是聲明
a = 10;這就是定義
var 在最開始執行時只會聲明,但不會定義,而賦予的默認值則會是undefined,簡單來說就是說會記住
a,可是a是什麼並不會記住,因此默認是undefined。
function:咱們創建一個函數
function f(){
console.log(666)
}
f()
function 聲明的函數在代碼執行以前早就已經存在了因此在整個js的任意位置均可以執行。
複製代碼
用 var 和 function 都創建一個函數,在他們上面輸出:
複製代碼
很明顯就能看出 var 和 function 的區別,function 提早聲明定義因此哪裏均可以輸出,而 var 則會是 undefined。
咱們剛纔說了 function 即聲明又定義可是在{}塊級做用域中 只聲明不定義,聲明不定義 給的默認值都是undefined。spa
通常會出如今 for、if.....這些塊級做用域中
例如:
console.log(f)
for(var i=0;i<3;i++){
function f(){
}
}
複製代碼
結果是undefined,在塊級做用域中只聲明不定義,一樣在條件句中的代碼也會進行變量提高 無論條件是否成立對於
帶function 的變量這時也只有聲明沒有定義。
複製代碼