Понимание приведения типов оператора в momentjs

#javascript #momentjs

#javascript #momentjs

Вопрос:

У меня есть объект date в moment

 const myDate = moment.utc(new Date()).startOf('day');
  

Подход # 1

 console.log(myDate.valueOf());
  

против подхода # 2

 console.log( myDate());
  

Оба они делают одно и то же, я хочу знать, как это myDate() работает, и я нигде не мог найти документацию для этого.

Ответ №1:

Это не momentjs, это то, как работает унарный оператор в JavaScript.

Унарный оператор plus предшествует своему операнду и вычисляет его операнд, но пытается преобразовать его в число, если оно еще не выполнено. Хотя унарное отрицание (-) также может преобразовывать не-числа, унарный плюс является самым быстрым и предпочтительным способом преобразования чего-либо в число, поскольку он не выполняет никаких других операций над числом. Он может преобразовывать строковые представления целых и плавающих чисел, а также нестроковые значения true, false и null. Поддерживаются целые числа как в десятичном, так и в шестнадцатеричном (с префиксом «0x») форматах. Поддерживаются отрицательные числа (хотя и не для hex). Если он не может проанализировать определенное значение, он будет вычислен до NaN.

Ответ №2:

Я нигде не смог найти документацию для этого.

Это в спецификации JavaScript. 🙂

Унарный оператор преобразует свой операнд в число с помощью абстрактной ToNumber операции, которая (для объектов) вызывает valueOf (затем, если необходимо, потому что это возвращает объект [!], вызывает toString ) и преобразует результирующий примитив в число, если оно еще не является единицей.

Поскольку объект moment поддерживает valueOf и возвращает число, myDate и myDate.valueOf() делает то же самое.

Комментарии:

1. Спасибо, на самом деле я не знал точного термина того, что мне нужно было искать. Теперь я знаю, большое спасибо, сэр.