2009-03-26 4 views

Répondre

3

Oui

js> false && true == false 
false 
js> (false && true) == false 
true 

Depuis == a une priorité supérieure &&, la première est analysée comme false && (true == false), ce qui équivaut à false && false, et évalue ainsi à false. La deuxième est équivalente à false == false, qui est true

+0

Génial, merci :) BTW pouvez-vous recommander une console js? –

+0

J'utilise spidermonkey http://www.mozilla.org/js/spidermonkey/ Je ne l'utilise pas pour autant, juste en testant l'expression occasionnelle comme ceci. –

+0

firebug https://addons.mozilla.org/en-US/firefox/addon/1843 a une console JS – rmmh

2

La langue est analysée de sorte que votre instruction soit l'équivalent de (a && (b == c)). L'opérateur d'égalité s'exécutera toujours avant &&, || et d'autres opérateurs logiques. Vous pouvez trouver les détails Nitty-gritty here.

+0

Oui, je comprends cela, mais j'essayais de comprendre si cela faisait une différence dans cet exemple précis. –

2

Yup. == plus étroitement que se fixe &&, donc ce que vous avez binds comme

var val = a && (b == c) 

Voir here. Donc a==0, b==1 et c==0 est faux, tandis que (a&&b)==c est vrai.

(faute de frappe fixe. Zut.)

+0

a = 1, b = 0, c = 0 dans a && b == c donnerait 1 && (0 == 0) => 1 && true => true –

+0

Dammit. Merci. –

Questions connexes