2010-12-01 13 views

答えて

10

fooがすでに定義されており、真と評価されている場合、それはすなわち、それは何もしない、foo = fooを設定します。 fooが定義されているが偽と評価されている場合は

、それは(falsenullundefined、空の文字列、0、NaNで)であるものは何でもfooポップアップだろうが、alert何も返さないことから、fooundefinedに設定されます。

fooがまだ定義されていない場合は例外がスローされます。 (編集:あなたの例では、は常にvar foo宣言のために定義されます)。

4

foo(例えば、偽ヌル又はゼロ)偽と評価された場合、||オペレータ後の値も評価し、その値を示しています。

alertメソッドは値を返しません。したがって、fooは、falseと評価された場合は未定義になります。それ以外の場合は、それ自身の値が割り当てられます。

+0

割り当てられていませんか?それは価値です – Hogan

+0

@Hogan:はい、割り当てられています。 – Guffa

+0

'alert(foo)'は未定義を返します。 –

3
var foo; 

if (foo) 
    foo = foo; 
else 
    foo = alert(foo); // probably undefined 
+1

@Hogan:> * alert(foo);右辺値ではない左辺値*です。何? –

+0

@クレセント:nevermind - ここでは適用されない用語です。 – Hogan