2009-10-13 8 views
54

私は不思議に思っていましたが、return文がない関数(またはreturn文を使わない)はfalseと完全に等しい値を返しますか?例えばreturnステートメントがないとjavascript関数は何を返しますか?

function foo(){}; 
!!foo(); 

これは放火犯で実行された場合はfalseを返す必要があります(しかし、私はただのfoo()と呼ばれる場合は、何も返しません。)。

ありがとうございます!

ジェイソン

+1

JavaScriptをも 値が存在しないことを示す第2の値を有する。未定義の値は、より深い種類の不在を表します。これは、初期化されていない変数の値 と、存在しないオブジェクトの値 の値を照会するときに得られる値です。定義されていない の値は、戻り値がない関数、戻り値が の関数パラメーターの値が である関数によっても返されます。定義されていないグローバル変数です。 – Xsi

答えて

68

(1を押すことなくその実行を終了するか、1)return文のない機能はundefinedを返します。

undefinedの値で単項否定演算子を2回使用すると、falseが得られます。

Firebugは未定義の式の結果を出力しないため、コンソールに何も表示されません(コンソールにundefined;と入力すれば何も表示されません)。

しかし、あなたが直接console.log関数を呼び出し、そしてあなたがそれを見ることができます場合:

function foo(){} 

console.log(foo()); // will show 'undefined' 
+0

この回答は正しいです。 FirebugコンソールまたはSafariコンソールを使用して、javascriptをインタラクティブにテストできます。 –

+7

または、アドレスバーに次のようにコピーしてください:javascript:alert(function(){}()); – Marius

3
<html> 
<body> 
<script> 
function a() {} 
alert(a()); 
</script> 
</body> 
</html> 
1

調べるために、放火犯のコンソールでこれを試してみてください。

alert((function(){})()); 
関連する問題