! operator w JavaScript
Jestem teraz zdezorientowany! operator w JavaScript. Moje zrozumienie było! operator działa tylko na boolean. Ale komentarz do jednego z moichodpowiedzi mówi, że może działać na czymkolwiek i zwraca wartość logiczną, która okazała się prawdziwa po wykonaniu niektórych testów.
alert(!undefined); //true
alert(!function(){}); //false
alert(!{}); //false
alert(!null); //true
alert(!()); //crash
alert(!"false"); //false
alert(!false); //true
Czy ktoś może mi pomóc uogólnić zachowanie! operator.
EDYTOWAĆ
Jeszcze bardziej mylące rzeczy:
alert( new String() == ""); //true
alert(!""); //true
alert(! new String()); //false
W jaki sposób?