"mac" != ptf.substr(0, 3) && (is_osx = !1)
C'est effectivement un "if" ou plut�t une mani�re de faire un "if". Le principe est simple, il consiste � exploiter le comportement du "et" logique (&&):
dans une condition avec plusieurs assertions s�par�es par &&, toutes les assertions doivent �tre v�rifi�es pour que cette condition r�ussisse. Ce qui signifie que si la premi�re assertion est v�rifi�e alors on teste la deuxi�me et ainsi de suite. Par contre, d�s qu'une assertion n'est pas v�rifi�e, la condition est alors fausse et il est inutile de tester les assertions suivantes (car quelque soit leur r�sultat �a ne changera rien). Ceci a pour cons�quence que ces assertions sont tout simplement ignor�es comme si elles n'existaient pas.
Pour en revenir au bout de code, si la condition "mac" != ptf.substr(0, 3) �choue, l'affectation is_osx = !1 n'aura pas lieu (contrairement � la guerre de Troyes), si elle r�ussit l'affectation is_osx = !1 aura lieu.
D�tail syntaxique, le pourquoi des parenth�ses autour de l'affectation:
C'est simplement d� � la pr�c�dence des op�rateurs, la pr�c�dence de && est plus �lev�e que celle de =, donc en mettant l'affectation entre parenth�ses, je m'assure que cette ligne n'est pas interpr�t�e comme: ("mac" != ptf.substr(0, 3) && is_osx) =!1 (ce qui ne voudrait pas dire grand chose vue que "mac" != ptf.substr(0, 3) && is_osx ne constitue pas une lvalue.)
Quant au !1, c'est juste une mani�re plus courte d'�crire false.
Bref, cette ligne peut plus clairement s'�crire:
1 2 3
| if ( "mac" != ptf.substr(0, 3) ) {
is_osx = false;
} |
De la m�me mani�re avec le "ou" logique, on peut faire un if then else de cette mani�re: assertion && then || else.
(Le || quant � lui �value la suite si l'assertion pr�c�dente �choue).
Ce type d'�criture un peu cryptique �mane plut�t du geek qui aime ce genres de raccourcis (quoi qu'il en soit �a reste relativement courant), mais plus fr�quemment on peut le rencontrer lorsqu'un code est pass� par un minifier pour r�duire sa taille.
Les autres lignes fonctionnent sur le m�me principe.
Partager