2016-11-14 2 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

答えて

1

typeofは文字列を返します。

undefined === undefined //true

より

typeof(undefined) === "undefined" //true

typeof上:

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); 
 
    } 
 
} 
 
)();

関連する問題