Wenn ([] == false) true ist, warum führt ([] || true) dann zu []?

Ich habe gerade ein paar Tests gemacht und finde das seltsam:

[] == false

Gibt wahr, das macht Sinn, weil double equal nur den Inhalt und nicht den Typ vergleicht und versucht, Typenzwang zu betreiben. Aber wenn der Vergleich von Inhalten und Rückgabe wahr ist, bedeutet dies, dass [] falsch ist (wenn Sie es getan haben)[] == true Sie erhalten auch falsch), was bedeutet:

[] || false

Sollte falsch geben, aber es gibt [], was es wahr macht? Warum?

Ein anderes Beispiel:

"\n  " == 0

Gibt wahr, aber"\n " || false gibt"\n "? Gibt es eine Erklärung dafür oder ist es nur eine Kuriosität?

Als ich das in C ausprobiert habe, bekommen wir:

int x = "\n " == 0;
printf("%d\n", x);

int y = "\n " || 0;
printf("%d\n", y);

Ausgänge:

0
1

Dies ist sinnvoll, aber angesichts des Einflusses von C auf Javascript ist das Verhalten anders.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage