! Operator in JavaScript

Ich bin jetzt verwirrt! Operator in JavaScript. Mein Verständnis war! Der Operator arbeitet nur mit Booleschen Werten. Aber ein Kommentar zu einem meinerAntworten sagt, es kann auf alles angewendet werden und gibt einen Booleschen Wert zurück, der zufällig wahr ist, nachdem ich einige Tests durchgeführt habe.

alert(!undefined); //true
alert(!function(){}); //false
alert(!{}); //false
alert(!null); //true
alert(!()); //crash
alert(!"false"); //false
alert(!false)​;​​​​​​​​​​​​ //true​​​​​​​​​​​​​​​​​​

Kann mir jemand helfen, das Verhalten von zu verallgemeinern! Operator.

BEARBEITEN

Noch verwirrenderes Zeug:

​alert( new String() == ""); //true
alert(!""); //true
alert(! new String()); //false

Wie? Für den Fall, dass Sie nicht mehr weiterkommen möchten

Antworten auf die Frage(5)

Ihre Antwort auf die Frage