第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

看《你不知道的javascript》,自己試驗了一下書中一段代碼,和書中講解的不一樣

看《你不知道的javascript》,自己試驗了一下書中一段代碼,和書中講解的不一樣

楊__羊羊 2018-09-10 12:10:44
fun(); //報錯TypeErrorvar a=true;if(a){     function fun() {         console.log("1");     } }else{     function fun() {         console.log("2");     } }按書中的說法,由于函數(shù)的提升,且不受條件判斷控制,應該是輸出2的??墒俏疫\行卻報錯了。然后我把條件控制去掉,像這樣:    fun();//2     function fun() {        console.log("1");     }     function fun() {        console.log("2");     }果然,輸出了2然后,我把條件語句加上,在最后執(zhí)行函數(shù),像這樣:var a=true;if(a){     function fun() {         console.log("1");     } }else{     function fun() {         console.log("2");     } }fun();//1輸出1誰能解釋一下,第一個輸出的原理?以及和書上的不一樣,是因為瀏覽器升級了的緣故嗎?
查看完整描述

2 回答

?
qq_慕容0484495

TA貢獻1條經(jīng)驗 獲得超0個贊

書上也說了,這樣聲明函數(shù)不可靠,在JavaScript未來的版本可能發(fā)生變化。

我用的node12,輸出的也是1,可能書上的預言應驗了。

查看完整回答
反對 回復 2020-01-14
?
鴻蒙傳說

TA貢獻1865條經(jīng)驗 獲得超7個贊

首先是不贊成這種寫法,然后我分享一下在 Node5 下的試驗

var a = true;

fun();  // 這里輸出 3if (a) {    function fun() {        console.log("1");
    }
} else {    function fun() {        console.log("2");
    }
}

fun();  // 這里輸出 1function fun() {    console.log("3");
}

所以可以分析出,最下面的 .log(3) 那個函數(shù)是函數(shù)定義,上面兩個是被當作函數(shù)表達式處理的。但是命名函數(shù)表達式的名稱只能在函數(shù)表達式內(nèi)部使用,所以這里如果是當作命名函數(shù)表達式的話,又不科學了。再做個試驗,用括號強制把中間兩個函數(shù)申明為函數(shù)表達式

var a = true;

fun();  // 這里輸出 3if (a) {
    (function fun() {        console.log("1");
    });
} else {
    (function fun() {        console.log("2");
    });
}

fun();  // 這里輸出 3function fun() {    console.log("3");
}

符合對命名函數(shù)表達式的判斷。

所以,目前只能是認為解釋器把那句話解釋成了 var fun = function fun() {....}


查看完整回答
反對 回復 2018-10-11
  • 2 回答
  • 0 關注
  • 784 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號