2012-07-10 14 views
16

Eventuali duplicati:
What does “javascript:void(0)” mean?
What does void 0 mean?Come capire "return obj === void 0" nell'origine del carattere di sottolineatura?

Nel file http://underscorejs.org/underscore.js, si può vedere un tale blocco di codice:

// Is a given variable undefined? 
_.isUndefined = function(obj) { 
    return obj === void 0; 
}; 

Non capisco il void 0 parte, è molto strano. Come capirlo?

+0

http://stackoverflow.com/questions/7452341/what-does-void-0-mean – Freewind

risposta

11

Questa è l'uscita della console

>typeof void 0 
"undefined" 
>void 0 === undefined 
true 
>"undefined".length 
9 
>"void 0".length 
6 

Credo che stanno cercando di salvare 3 byte di dimensioni del file;)

Edit: Questo SO risposta ha più senso di usare void 0, come undefined è solo una proprietà dell'oggetto window ed è modificabile. Quindi void 0 è un modo affidabile per generare undefined attraverso i browser

+2

Grazie, ma c'è una spiegazione su "void 0"? Stavo pensando che è una funzione invocazione di 'void (0)' ma manca '()'. Sembra sbagliato. – Freewind

+4

'void' è quasi come' typeof' che non è una funzione ma un operatore – Tamil

+0

Che abbia senso capire. –

7

In javascript (dal 1.1), l'operatore void viene utilizzato per valutare un'espressione e restituire undefined.

Vedi ECMAScript Language Specification of the void operator

Così void 0 è un modo corretto e standard per la produzione di undefined.

Poiché è un operatore, non è necessaria alcuna parentesi.

+2

Anche il problema qui è che si potrebbe sovrascrivere globale indefinito in JS e causa molte rotture. In questo modo le librerie che usano void 0 sono più sicure. –

Problemi correlati