2015-10-17 9 views
6

Jestem po raz pierwszy w kontakcie z JavaScript. Konsultowałem się z moim kolegą, jak uzyskać aktualny czas.d = nowa data(); d.valueOf() kontra Date.now()

Powiedział mi z tym kodem:

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

Ale większość ludzi robi to w ten sposób:

> Date.now() 

Drugi sposób jest prostszy i bardziej czytelny.

Jeśli chcę przekonać mojego kolegę do skorzystania z drugiego, jak mam mu wyjaśnić różnicę?

+2

Jaki jest jego/jej powód do korzystania z pierwszej wersji? – Sirko

+0

Funkcja Date.now() nie jest obsługiwana w IE8, dlatego niektóre osoby tego unikają. – Ramanlfc

+0

Możesz także zrobić '(new Date()). ValueOf()'. – Dai

Odpowiedz

6

Istnieje kilka sposobów, aby uzyskać aktualny czas w JavaScript:

Jak wspomniano w komentarzach i linki MDN, Date.now() nie jest obsługiwana w programie Internet Explorer 8. Jeśli więc kompatybilność IE 8 jest problemem, który trzeba zastosować new Date().valueOf() kosztem nieznacznie zmniejszył czytelności kodu.

Lub jeśli chcesz korzystać z Date.now(), ale musi być kompatybilny z przeglądarkami, które go nie obsługują, możesz umieścić poniższy kod w swoich plikach JavaScript, który doda obsługę.

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

Po przeczytaniu MDN wydaje new Date().getTime(), new Date().valueof() i Date.now() są funkcjonalnie równoważne. Jednak, Date.now() jest obsługiwany tylko w przeglądarkach z różnych wersji, przede wszystkim IE9. Więc jeśli wsparcie przed IE9 jest ważne, możesz potrzebować polyfill.

Edycja: naprawdę jedynym problemem jest IE. Czy to nie zawsze? ;)