2015-10-17 12 views
6

Sono in primo luogo in contatto con JavaScript. Ho consultato il mio collega su come ottenere l'ora corrente.d = new Date(); d.valueOf() vs Date.now()

Mi ha detto che con questo codice:

> d = new Date() 
> d.valueOf() 

Ma la maggior parte delle persone lo fa in questo modo:

> Date.now() 

Il secondo metodo è più semplice e più leggibile.

Se voglio convincere il mio collega a usare il secondo, come dovrei spiegargli la differenza?

+2

E qual è il suo motivo per utilizzare la prima versione? – Sirko

+0

Date.now() non è supportato in IE8, ecco perché alcune persone lo evitano – Ramanlfc

+0

Puoi anche fare '(new Date()). ValueOf()'. – Dai

risposta

6

Ci sono diversi modi per ottenere l'ora corrente in JavaScript:

Come accennato nei commenti e link MDN, Date.now() non è supportata in Internet Explorer 8. Quindi, se IE 8 compatibilità è una preoccupazione si dovrebbe usare new Date().valueOf() a costo di leggibilità del codice leggermente diminuita.

O se si desidera utilizzare Date.now() ma deve essere compatibile con i browser che non lo supportano, è possibile inserire il seguente codice da qualche parte nei file JavaScript, che aggiungerà il supporto per esso.

if (!Date.now) { 
    Date.now = function() { 
     return new Date().getTime(); 
    } 
} 
4

Dopo aver letto MDN, sembra new Date().getTime(), new Date().valueof() e Date.now() sono tutti funzionalmente equivalenti. Tuttavia, Date.now() è supportato solo nei browser di versioni diverse, soprattutto IE9. Pertanto, se il supporto di IE9 pre è importante, potrebbe essere necessario il polyfill.

Modifica: davvero, l'unica preoccupazione è IE. Non è sempre? ;)