2012-01-19 3 views
1

Когда я создаю переменные, я не использую скобки после знака равенства.Что означает эта переменная javascript?

Почему этот код использует скобки после знака равенства? Может кто-нибудь объяснить это? Я хочу знать, что это означает, когда знак равенства.

var start = (new Date).valueOf(), 

ответ

1

Этот метод возвращает эквивалентность объекта Date в миллисекундах.

Миллисекунды выражаются как целое число, представляющее число миллисекунд между полуночью 1 января 1970 г. (GMT) и датой и временем, указанными в объекте Date.

+0

вы имеете в виду valueOf() функция автоматически преобразующих Дата объект миллисекунды? – dgwkgg

2

paranthesis вокруг new Date причины, чтобы быть оценены первым, поэтому создается дата, а затем вызвать valueOf на вновь созданную дату.

Это в основном как делать

var d = new Date(); 
var start = d.valueOf(); 

но на одной линии.

Однако оно должно быть (new Date()).valueOf(). Сейчас будет ошибка.

1

Простая вещь. new Date возвращает дату. Без скобок это будет new Date.valueOf(). Поскольку Date не имеет метода valueOf(), это приводит к ошибке.

НО, экземпляр Date имеет эту функцию. Поэтому мы используем скобки. (new Date).valueOf() такое же, как

var start = new Date; 
start.valueOf(); 
2

намерение это сократить следующий код:

var date = new Date(); 
var start = date.valueOf(); 

но вы не можете написать:

var start = new Date().valueOf(); 

потому, что Тереза ​​нет Date().valueOf(), которые могут быть использованы в качестве конструктора, так что вы» Мне нужно добавить фигурные скобки. часть в фигурных скобках будет выполнена первой (создание новой даты), и valueOf() будет вызываться по результату кода в фигурных скобках (читайте: по построенной дате). Тем не менее, решение это то, что мы получили в вопросе:

var start = (new Date).valueOf(); 

результат всего этого является отметкой времени в миллисекундах.

1

Обертывание парсеров вокруг new Date оценивает вызов для создания объекта Date, а затем вызывает метод объекта даты ->valueOf. Легче понять пример будет

(3 + 2) + 2; // = 7 - evaluates 5 then adds 2 

метод valueOf определяется как:

Возвращает примитивное значение объекта Date. Переопределяет метод Object.prototype.valueOf.

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

Вы действительно можете достичь того же с помощью

var start = +(new Date()) 
// returns the integer value of the date (in milliseconds) 
// aka the primitive value 
Смежные вопросы