var timeInMs = Date.now();
за MDN
vs.
var timeInMs = new Date(optional).getTime();
за MDN .
Есть ли какая-то разница между ними, кроме синтаксиса и возможности установить дату (не текущую) через опцию во второй версии?
Date.now () работает быстрее - проверьте jsperf
Ответы:
Это то же самое ( редактировать семантически; производительность немного лучше
.now()
):Однако значение времени из любого уже созданного
Date
экземпляра замораживается во время его создания (или в любое время / дату, на которые оно было установлено). То есть, если вы сделаете это:а затем подождать некоторое время, последующий вызов
now.getTime()
сообщит время в точке переменная была установлена.источник
dateObj.setTime(Date.now())
) или создавать новые объекты даты каждый раз, когда вы делаете что-то асинхронное, требующее доступа кDate
методам (например,dateObj.getMinutes()
)?Они фактически эквивалентны, но вы должны использовать
Date.now()
. Это четче и примерно в два раза быстрее.Изменить: Источник: http://jsperf.com/date-now-vs-new-date
источник
Date(optional).getTime();
что нужно выделить место для получения нового объекта Date до получения текущего времени?Когда вы это делаете,
(new Date()).getTime()
вы создаете новый объект Date. Если вы сделаете это несколько раз, это будет примерно в 2 раза медленнее, чем Date.now ().Тот же принцип должен применяться к
Array.prototype.slice.call(arguments, 0)
vs[].slice.call(arguments, 0)
источник
Да, это правильно; они фактически эквивалентны при использовании текущего времени.
источник
Иногда предпочтительнее сохранить некоторую переменную отслеживания времени в формате объекта Date, а не в виде количества миллисекунд, чтобы иметь доступ к методам Date без повторного создания экземпляра. В этом случае Date.now () по-прежнему выигрывает у new Date () и т.п., хотя только примерно на 20% в моем Chrome и на небольшую сумму в IE.
Смотрите мой JSPERF на
vs.
http://jsperf.com/new-date-vs-settime
источник