Quelqu'un peut-il expliquer ce que cela fait?var foo = foo || alerte (foo);
var foo = foo || alert(foo);
Quelqu'un peut-il expliquer ce que cela fait?var foo = foo || alerte (foo);
var foo = foo || alert(foo);
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
.)
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.
var foo;
if (foo)
foo = foo;
else
foo = alert(foo); // probably undefined
@Hogan:> * alerte (foo); est une lvalue pas une valeur *. Quelle? –
@Crescent: nevermind - C qui ne s'applique pas ici. – Hogan
N'est-il pas affecté? C'est un rvalue – Hogan
@Hogan: Oui, c'est assigné. – Guffa
'alert (foo)' renvoie undefined. –