鍍金池/ 問答/HTML/ JS 函數(shù)聲明和變量聲明的提升順序

JS 函數(shù)聲明和變量聲明的提升順序

現(xiàn)在統(tǒng)一都認為函數(shù)聲明的提升優(yōu)先于變量聲明的提升,能不能給個例子證明這一觀點?

下面的例子,并不能論證這一觀點

console.log(person); //? person() { console.log('function')}
function person() {
    console.log('function')
}
console.log(person); //? person() { console.log('function')}
var person = "variable";
console.log(person);//variable

無論是變量聲明還是函數(shù)聲明哪個優(yōu)先,結(jié)果都是一樣的;

// 假設(shè)變量聲明優(yōu)先,實際代碼如下
var person;
function person() {
    console.log('function')
}
console.log(person); //? person() { console.log('function')}
console.log(person); //? person() { console.log('function')}
person = "variable";
console.log(person);//variable

// 假設(shè)函數(shù)聲明優(yōu)先,實際代碼如下
function person() {
    console.log('function')
}
var person;
console.log(person); //? person() { console.log('function')}
console.log(person); //? person() { console.log('function')}
person = "variable";
console.log(person);//variable

請各位大牛給個可以證明的例子,或者上述內(nèi)容有啥不對的地方,萬分感謝

回答
編輯回答
命于你

函數(shù)聲明提升優(yōu)先,后面的變量聲明都會被忽略,標準就這么寫。。。
如果變量聲明優(yōu)先,再聲明函數(shù)的話理應(yīng)報錯的。

2017年9月25日 23:34
編輯回答
久礙你

標準里就是這么寫的呀。。。

你后面那段代碼,先聲明變量然后在聲明函數(shù),一開始得到的 person 是函數(shù),反過來也是一樣的,這不就說明函數(shù)聲明優(yōu)先級要大么。
否則,誰寫在前面誰大不就是第一個是變量,第二個才是函數(shù)么。。。或者后面的優(yōu)先級大。。。

變量聲明提示說的就是函數(shù)一開始的時候變量默認的值呀,在函數(shù)執(zhí)行過程中肯定可以給函數(shù)賦其他值

http://zonxin.github.io/post/...

2017年6月11日 09:36
編輯回答
厭遇
console.log(a) // undefined
var a = 1
console.log(a) // 1

把這個列子和第一個例子對比,就可以看出優(yōu)先順序了。
如果變量聲明的優(yōu)先級大于函數(shù)聲明,那么你第一個例子的第一個打印值,應(yīng)該是undefined,而不是函數(shù)引用。
例如是下面這種情況。

console.log(person); //undefined
function person() {
    console.log('function')
}
console.log(person); //? person() { console.log('function')}
var person = "variable";
console.log(person);//variable
2018年9月14日 18:04