2016-11-14 103 views
0

我剛剛在學習JavaScript提升時寫了一個例子。JavaScript提升和IIFE

var name = 'world'; 
 
(function(){ 
 
    if(typeof name === undefined){ 
 
\t var name = 'Jack'; 
 
\t console.log('goodbye ' + name); 
 
    }else{ 
 
\t console.log('hello '+ name); 
 
    } 
 
} 
 
)();

在這個例子中,我得到了hello undefined。令我困惑的是,由於name未定義,爲什麼它沒有根據if聲明記錄goodbye undefined

謝謝!

+1

'的typeof名=== 「未定義」' - 的typeof返回一個字符串* * –

+0

的typeof返回一個字符串 – epascarello

+0

感謝大家 – user7157408

回答

0

當您修復邏輯錯誤,如預期的輸出。

var name = 'world'; 
 
(function(){ 
 
    if(typeof name === "undefined"){ 
 
\t var name = 'Jack'; 
 
\t console.log('goodbye ' + name); 
 
    }else{ 
 
\t console.log('hello '+ name); 
 
    } 
 
} 
 
)();

1

你可能會檢查undefined直接。

var name = 'world'; 
 

 
(function() { 
 
    if (name === undefined) { 
 
     var name = 'Jack'; 
 
     console.log('goodbye ' + name); 
 
    } else { 
 
     console.log('hello ' + name); 
 
    } 
 
})(); 
 

 
console.log(name);

1

你不必使用typeof運算,你可以直接檢查名稱===未定義。

var name = 'world'; 
 
(function(){ 
 
    if(name === undefined){ 
 
\t var name = 'Jack'; 
 
\t console.log('goodbye ' + name); 
 
    }else{ 
 
\t console.log('hello '+ name); 
 
    } 
 
} 
 
)();