Mais par où il est passé ?

25 réponses
Avatar
Gloops
Bonjour tout le monde,

Je suis en train de déboguer du JavaScript en pas à pas sous Firefox,
j'arrive avec result = true, sur ceci :

if (!result) {
this.formatAndAdd(element, rule);
return false;
}

Je m'attends à aller au-delà du if, non ?

Eh bien quand j'appuie sur F11, je me retrouve sur le return false.

Est-ce compréhensible ?

Au demeurant, en fonction du contexte c'est le résultat attendu, puisque
ça se passe dans jquery.validate.js dans la fonction check, et que le
contrôle appelant est une zone de texte, donc pas "cochable".

Mais n'empêche qu'en envoyant une condition fausse à un if, me retrouver
sur la deuxième instruction à l'intérieur ...

10 réponses

1 2 3
Avatar
SAM
Le 01/03/15 23:21, Gloops a écrit :
Bonjour tout le monde,

Je suis en train de déboguer du JavaScript en pas à pas sous Firefox,
j'arrive avec result = true, sur ceci :

if (!result) {
this.formatAndAdd(element, rule);
return false;
}

Je m'attends à aller au-delà du if, non ?



si result est faux
il n'est pas impossible que le non-result (!result) soit vrai ? !

à l'inverse ...
if(!result) ===> rien ne se passe (puisque finalement "faux")

Eh bien quand j'appuie sur F11, je me retrouve sur le return false.

Est-ce compréhensible ?



Non je ne comprends rien à la manœuvre !
Qu'a à voir l'action sur une touche de clavier (plein écran ?) avec
cette fonction ?

Au demeurant, en fonction du contexte c'est le résultat attendu, puisque
ça se passe dans jquery.validate.js dans la fonction check,



sais pas ce k'c'est !
On n'est pas ici sur un forum de jQuery !!!

et que le contrôle appelant est une zone de texte, donc pas "cochable".



une zone de texte === un contrôle ????

dè plouz z'en plouz mystérieux !

Mais n'empêche qu'en envoyant une condition fausse à un if, me retrouver
sur la deuxième instruction à l'intérieur ...



ben non puisqu'on a vu qu'elle était vraie !
ha ben non ! "faux"
Bon! je sais plus, tu m'as tout mélangé là !


Cordialement,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
Avatar
Gloops
Le 01/03/2015 23:57, SAM a écrit :
Le 01/03/15 23:21, Gloops a écrit :
Bonjour tout le monde,

Je suis en train de déboguer du JavaScript en pas à pas sous Firefox,
j'arrive avec result = true, sur ceci :

if (!result) {
this.formatAndAdd(element, rule);
return false;
}

Je m'attends à aller au-delà du if, non ?



si result est faux
il n'est pas impossible que le non-result (!result) soit vrai ? !

à l'inverse ...
if(!result) ===> rien ne se passe (puisque finalement "faux")




Bon, alors si rien ne se passe, on va au-delà du if, non ?
Après l'accolade, quoi ...

Pourquoi sur le return false ?
Avatar
Yliur
Le Mon, 02 Mar 2015 00:07:33 +0100
Gloops a écrit :

Le 01/03/2015 23:57, SAM a écrit :
> Le 01/03/15 23:21, Gloops a écrit :
>> Bonjour tout le monde,
>>
>> Je suis en train de déboguer du JavaScript en pas à pas sous
>> Firefox, j'arrive avec result = true, sur ceci :
>>
>> if (!result) {
>> this.formatAndAdd(element, rule);
>> return false;
>> }
>>
>> Je m'attends à aller au-delà du if, non ?
>
> si result est faux
> il n'est pas impossible que le non-result (!result) soit vrai ? !
>
> à l'inverse ...
> if(!result) ===> rien ne se passe (puisque finalement "faux")
>

Bon, alors si rien ne se passe, on va au-delà du if, non ?
Après l'accolade, quoi ...

Pourquoi sur le return false ?



Est-ce que tu peux faire un "alert (result) ;" juste avant le if et
montrer le résultat ?

Et afficher une trace permettant de confirmer le passage dans le corps
du if ?
Avatar
SAM
Le 02/03/15 00:07, Gloops a écrit :
Le 01/03/2015 23:57, SAM a écrit :
Le 01/03/15 23:21, Gloops a écrit :
Bonjour tout le monde,

Je suis en train de déboguer du JavaScript en pas à pas sous Firefox,
j'arrive avec result = true, sur ceci :

if (!result) {
this.formatAndAdd(element, rule);
return false;
}



if(!result) ===> rien ne se passe (puisque finalement "faux")



Bon, alors si rien ne se passe, on va au-delà du if, non ?
Après l'accolade, quoi ...



Normalement ... oui ;-)

Pourquoi sur le return false ?



J'ai perdu ma boule de cristal et comme tu ne nous donnes ni :
- la fin de la fonction
- le déclencheur
on ne peut que supposer que ça te renvoie (!result) ???

Donc déjà essayer :

if (!result) {
alert('if !result = '+result);
this.formatAndAdd(element, rule);
return false;
}
alert('result = '+result);




et puis nous donner les 2 dernières lignes de cette fonction check



Cordialement,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
Avatar
Otomatic
Gloops écrivait :

j'arrive avec result = true, sur ceci :

if (!result) {


Peut-être est-ce la même chose qu'en PHP ou si on veut tester réellement
si une variable est false et non équivalente à false, il faut :
if($result === false) et non if(!$result)
--
Ce n'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont forcément raison. Coluche
Avatar
Gloops
Le 02/03/2015 14:22, Otomatic a écrit :
Gloops écrivait :

j'arrive avec result = true, sur ceci :

if (!result) {


Peut-être est-ce la même chose qu'en PHP ou si on veut tester réellement
si une variable est false et non équivalente à false, il faut :
if($result === false) et non if(!$result)




Ah j'ai l'impression que tu touches du doigt le sujet.
Tu peux développer un peu plus ?
Ou bien c'est expliqué, quelque part ?





Ah je me rappelle, il y a deux semaines, un employeur m'a fait passer un
test, et on me demandait si l'égalité se testait avec =, avec ==, ou
avec ===. J'avais C# en tête, j'ai répondu ==.

Du coup, je n'ai pas eu le poste (enfin ... j'en ai fait d'autres,
aussi, des comme ça).

C'est d'autant plus râlant quand on a vu la blonde qui gère le poste.
Avatar
Gloops
Le 02/03/2015 11:42, SAM a écrit :
Le 02/03/15 00:07, Gloops a écrit :
Le 01/03/2015 23:57, SAM a écrit :
Le 01/03/15 23:21, Gloops a écrit :
Bonjour tout le monde,

Je suis en train de déboguer du JavaScript en pas à pas sous Firefox,
j'arrive avec result = true, sur ceci :

if (!result) {
this.formatAndAdd(element, rule);
return false;
}



if(!result) ===> rien ne se passe (puisque finalement "faux")



Bon, alors si rien ne se passe, on va au-delà du if, non ?
Après l'accolade, quoi ...



Normalement ... oui ;-)

Pourquoi sur le return false ?



J'ai perdu ma boule de cristal et comme tu ne nous donnes ni :
- la fin de la fonction
- le déclencheur
on ne peut que supposer que ça te renvoie (!result) ???



Argh, et je n'ai pas dit où c'était. Là j'ai eu tort, parce que si
jamais j'ai oublié où c'est, ça va être coton pour assurer la suite du fil.

Bon enfin si c'est une fonction check j'ai quand même bien une idée d'où
elle peut crécher (c'est quoi cet accent aigu ? Je fais confiance au
correcteur orthographique mais je suis dubitatif ...)


Donc déjà essayer :

if (!result) {
alert('if !result = '+result);
this.formatAndAdd(element, rule);
return false;
}
alert('result = '+result);



Oui je vais essayer ça.





et puis nous donner les 2 dernières lignes de cette fonction check



Cordialement,




En fait, je mettrai toute la fonction, ça sera quand même plus clair.
Avatar
Otomatic
Gloops écrivait :

Tu peux développer un peu plus ?
Ou bien c'est expliqué, quelque part ?


Bonjour,

C'est expliqué dans la documentation PHP :
http://php.net/manual/fr/language.operators.comparison.php

Et pour beaucoup de fonction qui peuvent retourner "false" en cas de
problème, il est noté :

Avertissement
Cette fonction peut retourner FALSE, mais elle peut aussi retourner une
valeur équivalent à FALSE. Veuillez lire la section sur les booléens
pour plus d'informations. Utilisez l'opérateur === pour tester la valeur
de retour exacte de cette fonction.
--
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Technologie aéronautique : http://aviatechno.net
Concorde dans la presse de 1965 à 2003 : http://le-pointu.aviatechno.net
Avatar
Yliur
Le Tue, 03 Mar 2015 16:07:02 +0100
Gloops a écrit :

Le 02/03/2015 00:26, Yliur a écrit :
> Le Mon, 02 Mar 2015 00:07:33 +0100
> Gloops a écrit :
>
>> Le 01/03/2015 23:57, SAM a écrit :
>>> Le 01/03/15 23:21, Gloops a écrit :
>>>> Bonjour tout le monde,
>>>>
>>>> Je suis en train de déboguer du JavaScript en pas à pas sous
>>>> Firefox, j'arrive avec result = true, sur ceci :
>>>>
>>>> if (!result) {
>>>> this.formatAndAdd(element, rule);
>>>> return false;
>>>> }
>>>>
>>>> Je m'attends à aller au-delà du if, non ?
>>>
>>> si result est faux
>>> il n'est pas impossible que le non-result (!result) soit vrai ? !
>>>
>>> à l'inverse ...
>>> if(!result) ===> rien ne se passe (puisque finalement
>>> "faux")
>>>
>>
>> Bon, alors si rien ne se passe, on va au-delà du if, non ?
>> Après l'accolade, quoi ...
>>
>> Pourquoi sur le return false ?
>
> Est-ce que tu peux faire un "alert (result) ;" juste avant le if et
> montrer le résultat ?
>
> Et afficher une trace permettant de confirmer le passage dans le
> corps du if ?
>


Ah oui j'ai du mal à rester réactif sur les sujets urgents, et
j'avoue que celui-là comme c'est par curiosité je l'ai laissé après.

Il faudra que je revoie comment on lance une trace dans Firefox. J'ai
fait ça un temps avec des compilateurs, Firefox fait tellement de
trucs il doit bien y avoir ça dedans aussi.



Je crois qu'il y a une fonction log (...) ou un truc du genre. Mais tu
peux utiliser alert (...), tout simplement.
Avatar
Paul Gaborit
À (at) Tue, 03 Mar 2015 16:30:51 +0100,
Otomatic écrivait (wrote):

Gloops écrivait :

Tu peux développer un peu plus ?
Ou bien c'est expliqué, quelque part ?



C'est expliqué dans la documentation PHP :
http://php.net/manual/fr/language.operators.comparison.php

Et pour beaucoup de fonction qui peuvent retourner "false" en cas de
problème, il est noté :

Avertissement
Cette fonction peut retourner FALSE, mais elle peut aussi retourner une
valeur équivalent à FALSE. Veuillez lire la section sur les booléens
pour plus d'informations. Utilisez l'opérateur === pour tester la valeur
de retour exacte de cette fonction.



Si vous voulez comprendre pourquoi il existe deux opérateurs (== et ===)
en *javascript*, je vous conseille fortement de *ne* *pas* lire la
documentation PHP !!!

Voici un document en français rapidement trouvé via Goggle:
<http://blogs.codes-sources.com/cyril/archive/2006/11/29/l-operateur-en-javascript-script-equality-operator.aspx>

La référence reste évidement la norme ECMAScript.

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
1 2 3