(函數(shù)表達(dá)式聲明也認(rèn)為一種特殊的變量聲明岳锁,函數(shù)直接聲明才擁有函數(shù)提升)
- 函數(shù)提升優(yōu)于變量提升執(zhí)行
- 變量提升只提升聲明扩淀,函數(shù)提升聲明和賦值
- 變量聲明不會覆蓋變量或函數(shù)的賦值
- 函數(shù)聲明會覆蓋同名的變量聲明和函數(shù)賦值察迟,但不會覆蓋變量賦值!
- 立即執(zhí)行函數(shù)(IIFE)中存在局部作用域,變量只會提升到函數(shù)內(nèi)的頂部
function fn(){
console.log(1)
}
fn();//2
var fn=100;
function fn(){
console.log(2)
}
var a = 3;
function a(){};
console.log(a); //3
console.log(a); //function a(){}
var a = 3;
function a(){};
//相當(dāng)于執(zhí)行了如下代碼:
function a() {};
var a;
console.log(a);
a = 3;
同時存在兩種函數(shù)賦值時索赏,由于函數(shù)優(yōu)先提升后被表達(dá)式賦值復(fù)寫朴皆,因此執(zhí)行表達(dá)式賦值。
// 函數(shù)表達(dá)式
var f = function() {
console.log(1);
}
// 直接聲明
function f (){
console.log(2);
}
f();// 1