2012-01-05 10 views
37

Se si va a una pagina dei risultati di Google, ed eseguire rwt.toString(), vedrete che la chiamata di ritorno per questa funzione è:C'è qualche motivo per usare "return! 0" in javascript?

return !0; 

Non riesco a pensare di qualsiasi motivo per cui questo non sarebbe sempre true. E 'solo una stenografia per true, o c'è ancora qualcosa da fare qui?

risposta

44

È sempre vero, ma per il download sono necessari 2 byte (!0 di 2 caratteri) anziché 4 byte per scaricare il valore booleano true.

La maggior parte dei minifiguratori di Javascript convertirà true in !0 e falso in !1. Puoi vedere un esempio di ciò digitando var y = true; con Ottimizzazioni semplici sul Closure Compiler di Google: http://closure-compiler.appspot.com/home

+1

tuttavia richiede solo 1 byte per scaricare 1. return 1; avrebbe funzionato altrettanto bene, no? essendo non-zero, e sappiamo tutti che non si prova per vero, si prova per non falso. – stu

+0

Questo è interessante. La maggior parte delle implementazioni javascript ottimizza! 0 e! 1 su true e false senza calcolare? – Kekoa

+5

@stu 'return 1;' restituisce un tipo 'number'. Se qualcuno dovesse usare il valore restituito con gli operatori '===' o '! ==', otterrà risultati attesi da '! 0', ma non da' 1'. – Paulpro

Problemi correlati