console.log([]==false); //输出为true
console.log(['1']==false);//输出为false
On peut voir que cela peut déterminer rapidement si le tableau est vide, mais il y a quelques doutes sur le principe.
Connu :
1. Opérateur d'égalité "==" : convertissez d'abord puis comparez. Si l'un des opérandes est un booléen, il est converti en valeur numérique avant de comparer l'égalité. False est converti en 0 et true est converti en 1.
2. Si un opérande est un objet et que l'autre ne l'est pas, appelez la méthode valueOf() de l'objet et utilisez la valeur de type de base obtenue pour la conversion.
Donc, le côté droit de []==fasle sera converti en 0. Et le côté gauche ? Comment est-il converti ?
Ceci est pour vous, un tableau comparatif de javascript : Opérateurs Relationnels et Égitaires
http://tech.youzan.com/javasc...
Vous comprendrez après l'avoir lu
Parce qu'elles seront converties en valeurs booléennes à des fins de comparaison,
[]==false
=>
true == false //false
Convertissez d'abord au numéro 0, puis comparez.
Il est logique d'utiliser cette méthode pour juger que le tableau est vide, n'est-ce pas ?
Je pensais que ça ne rebondirait pas, mais c’est le cas. Dans la plupart des cas, on juge encore en fonction de la longueur. Bien entendu, la longueur est aussi un écueil lorsqu’on juge du nombre d’éléments !
On peut seulement dire que le mécanisme interne de js est qu'un tableau vide est faux, donc false==false est vrai ! Ensuite, le tableau non vide est naturellement converti en vrai, et true==false n'est pas vrai ! Y a-t-il quelque chose de difficile à comprendre ?