2016-05-25 24 views
7

Vorrei scrivere array.some(Boolean) come un modo per verificare se alcuni elementi in array sono veri.JavaScript: l'oggetto booleano può essere utilizzato come funzione di callback?

Ci sono problemi nell'utilizzo dell'oggetto Boolean in questo modo? Ha lo stesso comportamento nei browser moderni? È sempre equivalente a array.some(function(elem) { return !!elem; })?

+1

Per quanto ne so questa funzione che getta alcun valore a booleano. Qualsiasi funzione è anche un oggetto, quindi l'essere Booleano non dovrebbe essere un problema. – sielakos

+0

Ovviamente, qualcuno con un buon senso dell'umorismo potrebbe sovrascrivere la funzione 'Boolean' con, ad esempio,' Boolean = function() {return true; }; '. Oltre a ciò, non ci dovrebbero essere controindicazioni. –

risposta

7

Ci sono problemi nell'utilizzo dell'oggetto Boolean in questo modo?

No. A differenza parseInt per esempio (che sarebbe problematico), Boolean richiede solo un singolo argomento. Quindi non ci dovrebbero essere problemi con il passare gli altri argomenti di callback (index e array), semplicemente li ignorerà.

Ha lo stesso comportamento nei browser moderni?

Lo spero. Se non ti puoi fidare della funzione Boolean, cos'altro rimane?

È sempre equivalente a array.some(function(elem) { return !!elem; })?

Sì. Dalla spec:

Quando Boolean è chiamato come funzione anziché come un costruttore, esegue una conversione di tipo.

E questo è essenzialmente ciò che fa anche !!.


riferimenti rilevanti dal spec:

Problemi correlati