2012-01-05 18 views
37

Jeśli pójdziesz na stronie wyników Google i uruchomić rwt.toString(), zobaczysz, że wywołanie powrót do tej funkcji jest następująca:Czy jest jakiś punkt używania "return! 0" w javascript?

return !0; 

nie mogę wymyślić żadnego powodu, dlaczego nie zawsze będzie true. Czy to jest tylko skrót dla true, czy może dzieje się tutaj więcej?

Odpowiedz

44

To zawsze prawda, ale pobranie 2 bajtów zajmuje 2 bajty (!0) zamiast 4 bajtów, aby pobrać wartość boolowską true.

Większość miniaturek JavaScript przekonwertuje true na !0, a wartość false na !1. Możesz to zobaczyć, wpisując var y = true; dzięki Prostym optymalizacjom na Kompilatorze zamykania Google: http://closure-compiler.appspot.com/home

+1

jednak pobieranie 1 bajta zajmuje tylko 1, a powrót 1; zadziałałoby równie dobrze, nie? będąc niezerowym, a wszyscy wiemy, że nie testujesz prawdziwości, testujesz na nie fałsz. – stu

+0

To jest interesujące. Czy większość implementacji javascript optymalizuje! 0 i! 1 do wartości true i false bez obliczania? – Kekoa

+5

@stu 'return 1;' zwraca typ 'number'. Jeśli ktoś użyje wartości zwracanej przez operatorów '===' lub '! ==', uzyska oczekiwane wyniki z '! 0', ale nie z' 1'. – Paulpro

Powiązane problemy