變量提升
var a = 5;
function fafa(){
a==6;//false
a==5;//false
var a = 6;
function test(){
a == 6;//true
}
test();
};
fafa();
實際fafa裏執行順序是:
var a;//變量提升 a=undefined
a==6;//false
a==5;//false
a = 6;
test();
——————————————————————————————————
var a = 5;
function fafa(){
a == 5; //true
function test(){
a == 5;//true
}
test();
};
fafa();
函數內未定義a,則去函數外找。
函數提升
js中創建函數有兩種方式:函數聲明式和函數字面量式。只有函數聲明才存在函數提升!
console.log(f1); //[Function: f1]
console.log(f1()); //f1
console.log(f2); //undefined
//console.log(f2()); //報錯
function f1() {return 'f1'} //函數提升
var f2 = function() {return 'f2'}; //函數爲提升
(function() {
console.log(a); //undefined
a = 'aaa';
var a = 'bbb';
console.log(a); //bbb
})();