Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

Эта страница была переведена с английского языка силами сообщества. Вы тоже можете внести свой вклад, присоединившись к русскоязычному сообществу MDN Web Docs.

Числа и даты

Данный раздел представляет собой введение в работу с числами и датами в JavaScript.

Числа

В JavaScript все числа являютсячислами двойной точности в соответствии с 64-битным двоичным форматом IEEE 754 (т.е. числами, принадлежащими диапазону между -(253 -1) и 253 -1).Целые числа не рассматриваются как отдельный тип чисел. В дополнение к числам с плавающей запятой, к числовому типу данных относятся также три символьные величины:+бесконечность,-бесконечность, иNaN (не-число). В разделетипы и структуры данных в JavaScript числовой тип данных описан в контексте с другими примитивными типами в JavaScript.

Вы можете использовать четыре типа числовых литералов: десятичный, двоичный, восьмеричный и шестнадцатеричный.

Десятичные числа

js
1234567890;42;// Будьте внимательны при использование нулей в начале чисел:0888; // 888 обрабатывается как десятичное0777; // обрабатывается как восьмеричное в нестрогой форме (511 в десятичной)

Обратите внимание, что десятичные литералы могут начинаться с нуля (0) за которым следует другая десятичная цифра, но если следующая за нулём цифра меньше 8, то число обрабатывается как восьмеричное.

Двоичные числа

Синтаксис двоичных чисел использует ведущий 0 за которым следует латинская буква "B" в верхнем или нижнем регистре (0b or0B). Если цифры после0b не являются 0 или 1, то будет сгенерированноSyntaxError с сообщением: "Missing binary digits after 0b".

js
var FLT_SIGNBIT = 0b10000000000000000000000000000000; // 2147483648var FLT_EXPONENT = 0b01111111100000000000000000000000; // 2139095040var FLT_MANTISSA = 0b00000000011111111111111111111111; // 8388607

Восьмеричные числа

Синтаксис восьмеричных чисел использует ноль в начале. Если цифры после 0 не входят в диапазон от 0 до 7, число будет интерпретировано как десятичное.

js
var n = 0755; // 493var m = 0644; // 420

Шестнадцатеричные числа

Синтаксис шестнадцатеричных чисел использует ведущий 0 за которым следует латинская буква "X" в верхнем или нижнем регистре (0x or0X). Если цифры после 0x не входят в диапазон (0123456789ABCDEF), то будет сгенерированноSyntaxError с сообщением: "Identifier starts immediately after numeric literal".

js
0xfffffffffffffffff; // 2951479051793528300000x123456789abcdef; // 819855292164869000xa; // 10

Объект Number

У этого встроенного объектаNumber есть свойства для целочисленных констант, таких как максимальное число, не-число и бесконечность. Вы не можете изменить значения этих свойств, и вы должны использовать их следующим образом:

js
var biggestNum = Number.MAX_VALUE;var smallestNum = Number.MIN_VALUE;var infiniteNum = Number.POSITIVE_INFINITY;var negInfiniteNum = Number.NEGATIVE_INFINITY;var notANum = Number.NaN;

Как видно из примера выше, для получения перечисленных значений, нужно обращаться к свойствам предопределённого глобального объектаNumber. Тогда как у экземпляра этого объекта, созданного вами при работе программы, этих свойств не будет.

В следующей таблице приведён список свойств объектаNumber.

СвойствоОписание
Number.MAX_VALUEНаибольшее число из возможных для представления
Number.MIN_VALUEНаименьшее число из возможных для представления
Number.NaNСпециальное "Не числовое" ("not a number") значение
Number.NEGATIVE_INFINITYСпециальное значение "Минус бесконечность"; возвращается при переполнении
Number.POSITIVE_INFINITYСпециальное значение "Плюс бесконечность"; возвращается при переполнении
Number.EPSILONРазница между единицей и наименьшим значением, большим единицы, которое может быть представлено типомNumber.
Number.MIN_SAFE_INTEGERМинимальное целое, безопасное число в JavaScript.
Number.MAX_SAFE_INTEGERМаксимальное целое, безопасное число в JavaScript.
МетодОписание
Number.parseFloat()Принимает строку как аргумент, и возвращает числовое значение с плавающей точкой, которое удалось распознать. Тоже самое что и глобальная функцияparseFloat().
Number.parseInt()Принимает строку как аргумент, и возвращает целочисленное значение в заданной системе исчисления, которое удалось распознать. Тоже самое что и глобальная функцияparseInt().
Number.isFinite()Определяет, является ли число, переданное в качестве аргумента, конечным.
Number.isInteger()Определяет, является ли число, переданное в качестве аргумента, целым.
Number.isNaN()Определяет, является ли число, переданное в качестве аргумента,NaN (не числом). Аналогичный, но более надёжный метод чем глобальная функцияisNaN().
Number.isSafeInteger()Определяет, является ли .число, переданное в качестве аргумента, целым и безопасным.

Прототип Number предоставляет ряд методов, для получения значения числа в различных форматах. В следующей таблице перечислены методы, доступные черезNumber.prototype.

МетодОписание
toExponential()Возвращает строку, представляющую число в экспоненциальном представлении.
toFixed()Возвращает строку, представляющую число с заданным количеством разрядов после запятой.
toPrecision()Возвращает строку, представляющую число с указанной точностью.

Объект Math

Встроенный глобальный объектMath содержит свойства и методы для математических констант и функций. Например, свойство объектаMathPI содержит значение математической константы "Пи" (3.141...), которые вы можете использовать в программе как

js
Math.PI;

Подобным образом, математические функции являются методами объектаMath. Они включают тригонометрические, логорифмические, экспоненциальные и другие функции. Например, если вы хотите использовать тригонометрическую функцию синуса, вы напишете следующий код

js
Math.sin(1.56);

Заметьте, что все тригонометрические методы объектаMath принимают аргументы в радианах.

В следующей таблице перечислены методы объектаMath.

МетодОписание
abs()Возвращает абсолютное значение (модуль) аргумента
sin(),cos(),tan()Стандартные тригонометрические функции; принимают аргументы в радианах
asin(),acos(),atan(),atan2()Обратные тригонометрические функции; возвращают значения в радианах
sinh(),cosh(),tanh()Гиперболические тригонометрические функции; принимают аргументы в гиперболических углах
asinh(),acosh(),atanh()Обратные гиперболические тригонометрические функции; возвращают значения в гиперболических углах
pow(),exp(),expm1(),log10(),log1p(),log2()Экспоненциальные и логорифмические функции
floor(),ceil()Возвращают наибольшее/наименьшее целое, которое меньше/больше или равно входному значению
min(),max()Возвращают наибольшее или наименьшее (соответственно) из входных числовых значений, перечисленных через запятую
random()Возвращает случайное число от 0 до 1
round(),fround(),trunc(),Функции округления и отсечения дробной части
sqrt(),cbrt(),hypot()Корень квадратный, корень кубический, корень квадратный из суммы квадратов аргументов
sign()Знак числа, показывает является ли входное число позитивным, негативным или равным нулю
clz32(),imul()Количество первых нулевых бит в 32-битном двоичном представлении. Возвращает результат Си-подобного 32-битного целочисленного умножения двух аргументов.

В отличии от большинства других объектов, вам не нужно создавать свои экземпляры объектаMath. Всегда следует использовать глобальный объектMath непосредственно.

Объект Date

JavaScript не имеет отдельного типа данных для хранения дат. Однако, вы можете использовать объектDate и его методы для работы с датами и временем в вашем приложении. ОбъектDate имеет большое количество методов для записи, чтения и оперирования датой и временем, а свойств не имеет ни одного.

JavaScript оперирует датами во многом аналогично языку Java. Для работы с датой эти два языка имеют множество одинаковых методов, и оба они хранят даты как количество миллисекунд, прошедших с 00:00:00 1 Января 1970 года.

Период значений, которые может принимать Data, простирается от -100 000 000 до100 000 000 дней, относительно 1 Января 1970 года.

Чтобы создать свой экземпляр объектаDate используйте такой код:

js
var dateObjectName = new Date([parameters]);

гдеdateObjectName это имя переменной, которой будет присвоено созданное значение с типомDate; вместо этой переменной, присвоить созданное значение можно как свойство, любому существующему объекту.

ВызовDate как функции, без ключевого словаnew, возвращает текущую дату и время в виде текстовой строки.

Содержимым блокаparameters в коде представленном выше, могут выступать любая из следующих конструкций:

  • Пусто: создаёт текущую дату и время. Пример:today = new Date();.
  • Текстовая строка, содержащая дату и время в следующем формате: "Месяц день, год часы:минуты:секунды". Например:var Xmas95 = new Date("December 25, 1995 13:30:00"). Если не указать секунды, минуты или часы, то их значение будет принято за 0.
  • Набор целочисленных значений для года, месяца и дня. Например:var Xmas95 = new Date(1995, 11, 25).
  • Набор целочисленных значений для года, месяца, дня, часов, минут и секунд. Например:var Xmas95 = new Date(1995, 11, 25, 9, 30, 0);.

Получение даты в русскоязычном формате

new Date().toLocaleString('ru',  {    day: 'numeric',    month: 'long',    year: 'numeric'  });// текущая дата в формате: '10 января 2019 г.'

Подробнее про метод toLocalString

Методы объектаDate

Методы объектаDate для работы с датой и временем делятся на следующие категории:

  • "set" методы, служат для установки параметров объектаDate.
  • "get" методы, служат для получения параметров объектаDate.
  • "to" методы, служат для получения значения объектаDate в текстовом виде.
  • "parse" и UTC методы, служат для распознавания дат и времени из текстового формата.

При помощи методов групп "get" и"set", вы можете получить и установить значения секунд, минут, часов, дня месяца, дня недели, месяца и года по отдельности. Отдельно выделим методgetDay, который возвращает день недели, однако соответствующего ему методаsetDay не существует, потому-что день недели высчитывается автоматически. Все эти методы используют в своей работе целочисленные значения по следующим правилам:

  • Секунды и минуты: от 0 до 59
  • Часы: от 0 до 23
  • Дни недели: от 0 (Воскресенье) до 6 (Суббота)
  • Дни месяца: от 1 до 31
  • Месяцы: от 0 (Январь) до 11 (Декабрь)
  • Год: год относительно 1900 года.

Например, предположим, что вы определили дату следующим образом:

js
var Xmas95 = new Date("December 25, 1995");

ТогдаXmas95.getMonth() вернёт 11, аXmas95.getFullYear() вернёт 1995.

МетодыgetTime иsetTime могут быть полезны при сравнении дат. МетодgetTime возвращает количество миллисекунд, прошедших с 00:00:00 1 Января, 1970 года.

Для примера рассмотрим следующий код, показывающий количество дней оставшихся до конца текущего года:

js
var today = new Date(); // Получаем текущую датуvar endYear = new Date(1995, 11, 31, 23, 59, 59, 999); // Устанавливаем месяц и день на конец годаendYear.setFullYear(today.getFullYear()); // Устанавливаем текущий годvar msPerDay = 24 * 60 * 60 * 1000; // Количество миллисекунд в одних суткахvar daysLeft = (endYear.getTime() - today.getTime()) / msPerDay;var daysLeft = Math.round(daysLeft); // возвращает количество дней, оставшихся до конца года

Этот пример создаёт объектDate названныйtoday, который содержит текущую дату и время. Затем, создаётся вспомогательныйDate объект, названныйendYear, которому устанавливаются значения, указывающие на конец года. После этого, при помощи рассчитанного количества миллисекунд в сутках, вычисляется количество дней междуtoday иendYear, При этом используются методgetTime и округление, для получения количества полных дней.

Методparse полезен для присвоения значений существующим объектамDate из текстового формата. Например, следующий код использует методыparse иsetTime чтобы установить значение переменнойIPOdate:

js
var IPOdate = new Date();IPOdate.setTime(Date.parse("Aug 9, 1995"));

Пример

В следующем примере приведена функцияJSClock(), которая возвращает время в формате электронных часов:

js
function JSClock() {  var time = new Date();  var hour = time.getHours();  var minute = time.getMinutes();  var second = time.getSeconds();  var temp = "" + (hour > 12 ? hour - 12 : hour);  if (hour == 0) temp = "12";  temp += (minute < 10 ? ":0" : ":") + minute;  temp += (second < 10 ? ":0" : ":") + second;  temp += hour >= 12 ? " P.M." : " A.M.";  return temp;}

Первым делом, функция JSClock создаёт новый объектDate, названныйtime; так как объект создаётся баз параметров, переменнаяtime содержит текущую дату и время. Затем вызываются методыgetHours,getMinutes иgetSeconds, чтобы установить значения переменнымhour,minute иsecond.

Следующие четыре выражения строят текстовую строку на основе time. Первое из них создаёт переменнуюtemp, присваивая ей значение при помощи условия; Еслиhour больше чем 12, то (hour - 12), иначе простоhour. В случае же, когдаhour равно 0, берётся фиксированное значение "12".

Следующее выражение приращивает минуты к переменнойtemp. Если количество минут меньше 10, то условное выражение добавляет строку с двоеточием и заполняющим нулём, иначе, просто строку с двоеточием. Секунды приращиваются к переменнойtemp тем же путём.

В завершение всего, последнее условное выражение добавляет строку "P.M." к переменнойtemp еслиhour равно или больше 12, иначе, добавляется строка "A.M.".

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp