2016-04-12 13 views
1

下記のコードでは、変数fooの内容が定義されていないのはなぜですか?私たちのIIFE声明が何かを返すことを期待していました!IIFEは常にundefinedを返しますか?

var foo = (function(){ 
    var a=8; 
    console.log("hi"); 
})(); 
+4

'return'ステートメントがない場合、常に' undefined'が返されます。なぜ関数呼び出しが何かを返すことを期待していたのはなぜですか? – Pointy

+0

私はIIFEの結果が期待されていました。 foo = function(){var a = 0;}の場合と同様に、fooの内容を取得します –

+0

デフォルトでは、return文が使用されていない限り、すべての関数IIFEがJavaScriptで 'undefined'を返します。 – metame

答えて

6

は、呼び出しているあなたの表現の内部機能は、任意の値を返すされていないので、fooが定義されていない理由です。値が返された場合は、fooにその値が含まれます。

var foo = (function(){ 
    var a = 8; 
    console.log("hello"); 
    return "world"; 
})() 
console.log(foo);//world 
+0

これを私のコンソール(chrome)に渡すと '// world // undefined'が返されますなぜ「undefined」を返しますか? (申し訳ありませんが、私はまだ基​​本を学んでいます:)) – viery365

関連する問題