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

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

高程中一個函數聲明例子的困惑

高程中一個函數聲明例子的困惑

胡子哥哥 2018-11-22 22:14:25
《JavaScript 高級程序設計》第七章函數,關于函數聲明的提升問題,有這樣一個例子:if(condition){    function sayHi(){        alert("Hi!");    }} else {    function sayHi(){        alert("Yo!");    } }書上原文說:表面上看,以上代碼表示在condition 為true 時,使用一個sayHi()的定義;否則,就使用另一個定義。實際上,這在ECMAScript 中屬于無效語法,JavaScript 引擎會嘗試修正錯誤,將其轉換為合理的狀態(tài)。但問題是瀏覽器嘗試修正錯誤的做法并不一致。大多數瀏覽器會返回第二個聲明,忽略condition;Firefox 會在condition 為true 時返回第一個聲明。因此這種使用方式很危險,不應該出現在你的代碼中。但是我在 chrome 和 js bin里面測試,把 condition 改成 true,都能 alert“Hi”,并沒有出現書上說的“大多數瀏覽器會返回第二個聲明,忽略condition”的問題,這是為什么呢:if(true){    function sayHi(){        alert("Hi!");    }} else {    function sayHi(){        alert("Yo!");    } }sayHi();// Hi!
查看完整描述

1 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

true是一個字面量,不是一個變量,瀏覽器在解析的時候會把你這個if語句直接優(yōu)化掉,類似于這樣:

if(true){

    function sayHi(){

        alert("Hi!");

    }

} else {

    function sayHi(){

        alert("Yo!");

    } 

}


變成

function sayHi(){

    alert("Hi!");

}

然而作者指的是另一種情況


if(condition){

function sayHi(){

    alert("Hi!");

    }

} else {

    function sayHi(){

        alert("Yo!");

    } 

}

var condition = true

sayHi()


查看完整回答
反對 回復 2018-12-26
  • 1 回答
  • 0 關注
  • 441 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號