2014-07-24 10 views
5

Ho appena letto il codice sorgente underscope, e non può ottenere il punto da questo codice:Qual è il codice "length === + length" significa in JavaScript?

_.each = _.forEach = function(obj, iterator, context) { 
    if (obj == null) return obj; 
    iterator = createCallback(iterator, context); 
    var i, length = obj.length; 
    if (length === +length) { // why +length? 
     for (i = 0; i < length; i++) { 
      iterator(obj[i], i, obj); 
     } 
    } else { 
     var keys = _.keys(obj); 
     for (i = 0, length = keys.length; i < length; i++) { 
      iterator(obj[keys[i]], keys[i], obj); 
     } 
    } 
    return obj; 
}; 

perché lunghezza === + lunghezza? Immagino che questo sia usato per forzare la conversione se la lunghezza non è un numero? Qualcuno potrebbe darmi una mano?

+0

C'era un esatto duplicato, è ancora legato al codice esattamente lo stesso: http://stackoverflow.com/questions/8330499/operator-before-expression-in-javascript-what-does-it -fare –

risposta

2

+length converte qualsiasi valore di lunghezza in un numero (NaN se non possibile).

Quindi length===+length solo test che length è in realtà un numero (non una stringa che può essere convertita in un numero) e che non è NaN (che non è uguale a se stesso).

Problemi correlati