Javascript è un linguaggio con caratteri generici, quindi i tipi di esecuzione vengono eseguiti in fase di esecuzione ogni volta che l'interprete ritiene necessario. Se confronti un intero con una stringa, significa che dovrebbero essere dello stesso tipo, quindi, ad esempio, "34" == 34 è vero, poiché il numero intero verrebbe probabilmente convertito in una stringa prima del confronto.
La stringa "false" non è convertita in un valore booleano, mentre il valore bool false è convertito in una stringa, che avrebbe il valore "0", ovvero una stringa contenente il numero 0, che restituisce "0" "==" false ", che è ovviamente falso.
Se si desidera confrontare il valore senza fusione di caratteri automatica, confrontando in modo efficace i tipi così come i valori, utilizzare una tripla uguale:
5 === "5" false "stringa" === "stringa" vero
Questo è un duplicato di http://stackoverflow.com/questions/359494/javascript-vs –
Paolo, penso che la mia domanda sia un po 'diversa. L'altra domanda è '== vs ==='). E nella mia domanda c'è questa bool == "" che l'altra domanda non copre. Ma le due domande sono correlate. –
Le domande non possono essere formulate allo stesso modo ma il concetto è lo stesso in entrambi. –