(function(){
console.log(1);
setTimeout (function(){console.log(2);},1000);
setTimeout (function(){console.log(3);},0);
console.log(4);
})();
出力:
1
4
undefined
3
2
なぜ出力で未定義ありますか?
(function(){
console.log(1);
setTimeout (function(){console.log(2);},1000);
setTimeout (function(){console.log(3);},0);
console.log(4);
})();
出力:
1
4
undefined
3
2
なぜ出力で未定義ありますか?
これは、関数の戻り値がundefined
であるためです。だから、最初return value of function
それは
(function(){
console.log(1);
setTimeout (function(){console.log(2);},1000);
setTimeout (function(){console.log(3);},0);
console.log(4);
return 'xyz'
})();
出力が
1,4,'xyz',3,2
未定義は、関数の戻り値です。これは、ブラウザのコンソールでこれを行うと、関数の結果を自動的に出力するため、未定義のまま出力されます。
私は一番上のものを意味します。 – Bigdragon
@ LKTN.25 1つがあります!そのような 'somevar =/*質問に掲載されたコード* /;'なので、他の人を数えるIIFE自体がIIFE自体の中に包まれているだけです! –
ブラウザ自体のコンソールでそれをやっている場合は、それが未定義印刷さにconsole.logたび、その後、このスレッドを参照してください。
Chrome/Firefox console.log always appends a line saying undefined
そして、それが起こる理由を説明する無数の他のスレッドがあります。
これはコンソールではありませんが、あなたのJSファイル自体に続い未定義の関数の戻り値であることに
をやっている、あなたのコード内のどこかに何か他のものがあります場合は、コードの下に試すことができます。
(function(){
console.log(1);
setTimeout (function(){console.log(2);},1000);
setTimeout (function(){console.log(3);},0);
console.log(4);
return 5;
})();
あなたはGoogle Chromeのコンソールでこれをテストしているだろう例えば
のsetTimeout
から値を記録します、1,4ログ? –どこか別の場所にログオンしていない限り、「未定義」はありません。 –
私はクロムコンソールでテストしていました。 –