function m1(){
console.log('m1 one');
}
m1();
var m1 = function(){
console.log('m1 two');
}
m1();
這樣執行的結果是 先輸出m1 one 然後在m1 two;
function m1(){
console.log('m1 one');
}
m1();
function m1(){
console.log('m1 two');
}
m1();
這個輸出卻2次都是m1 two。
function m1(){}和var m1 = function(){} 這2種聲明有什麼不同?
請高手賜教
在js加載時,會對方法名和變量名先進行解析和加載
第一個過程
var m1;//掃描到變量,把申明提前了,但變量的初始值還是再原來的位置進行賦值,也就是初始時是函數的定義
function m1(){
console.log('m1 one');
}
m1();
m1 = function(){//這裡才對變量進行覆蓋
console.log('m1 two');
}
m1();
第二個過程中,js加載會先掃描function,一次掃描完在執行,m1就被後面的覆蓋了
function m1(){
console.log('m1 one');
}
m1();
function m1(){
console.log('m1 two');
}
m1();