2010-12-01 7 views

Répondre

10

Si foo est déjà défini et évalué à vrai, il définit foo = foo, à savoir qu'il ne fait rien.

Si foo est défini, mais devient fausse, il est foo tout apparaitre (false, null, undefined, chaîne vide, 0, NaN), mais étant donné que rien alert de retour, foo sera réglé sur undefined. Si foo n'est pas encore défini, une exception sera levée. (Modifier: Dans votre exemple, foo sera toujours défini en raison de la déclaration var foo.)

4

Si foo évalue à faux (par exemple faux, nulle ou zéro), la valeur après que l'opérateur || est également évaluée, et affiche la valeur.

La méthode alert ne renvoie pas de valeur, donc foo deviendra indéfinie si elle a été évaluée à false, sinon elle se verra attribuer sa propre valeur.

+0

N'est-il pas affecté? C'est un rvalue – Hogan

+0

@Hogan: Oui, c'est assigné. – Guffa

+0

'alert (foo)' renvoie undefined. –

3
var foo; 

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

@Hogan:> * alerte (foo); est une lvalue pas une valeur *. Quelle? –

+0

@Crescent: nevermind - C qui ne s'applique pas ici. – Hogan

Questions connexes