La syntaxe JS est critiquée encore et encore !
Gne gne : [] == [] → false
Omg : "1" == 1 → true
En fait, c'est logique : car == transforme en number les 2 côtés quand les types ne sont pas pareils !
+"1" == +1
+1 == 1
1 == 1
true
Je t'en explique d'autres #THREAD 👇
1 : [] est égal à ![]
Un tableau est égal à un "non tableau"
En fait, l'explication est simple, le == va faire ceci
[] == ![]
+[] == +![]
0 == +false
0 == 0
true
Car quand == n'arrive pas à comparer 2 valeurs il les transforme en number
Donc ici 0 == 0
2 : return statement
Dans un challenge de @Neolectron, il a joué de cette subtilité !
En js un retour à la ligne ici ajoute automatiquement un ;
Donc la première fonction ne return rien et la suite du code n'est jamais lue !
3. Donc null n'est pas égal à 0, ni supérieur mais il est supérieur ou égale !?
3.1 null == 0
Il ne convertit pas en number ici...
Car quand un des cotés est null l'autre coté doit être null ou undefined
Sinon ce serait true car +null → 0
3.2 : null > 0
Cette fois... il convertit en number xD
Donc +null → 0
Mais 0 > 0 → false
Donc encore une fois false !
3.3 : null >= 0
Cette fois aussi il va convertir en number !
Ensuite >= fonctionne différemment : il va prendre l'inverse de <
(ex: 4 >= 5 → !(4 < 5) → !true → false)
Avec notre exemple il va faire pareil !
C'est un joyeux bordel, il y a beaucoup à comprendre, si on peut le comprendre !
Entre l'algorithme de >= ou > ou == c'est pas simple !
4. split algo
Ici encore un truc wtf mais logique xD
Split va chercher de droite à gauche les occurrences et quand il en trouve, il va split à droite et à gauche de celle-ci
Avec un "" il va directement trouver, et vu qu'à droite comme à gauche il n'y a rien ça return rien.
Mais avec une string " " ou il va rien trouver, donc tout simplement return un tableau de notre string inital
Source. Je suis tombé sur un repo très cool qui répertorie toutes les critiques et explique pourquoi ça fonctionne comme ça
Je vais reprendre ces exemples et explications ici !
Retrouve toutes les bizarreries ici : github.com/denysdovhan/wtfjs
Je te conseille de lire le git que je partage ci-dessus car ça te fait réellement comprendre le langage avec pleins d'exemples et t'apprend que :
1. garde les semi-colonnes
2. utilise ===
Et te fait comprendre pourquoi !
Si ça t'a appris qqch RT le tweet pour me soutenir et follow @melvynxdev
Si tu veux rejoindre les lynx, tu peux venir ici : melvynx.com/emails
Il y a du lourd qui approche en ce retour de vacances !