English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основы JavaScript

Объекты JavaScript

Функции JavaScript

JS HTML DOM

JS браузер BOM

Основы AJAX

JavaScript руководство

Число (Number) в JavaScript

В JavaScript есть только один тип данных чисел, и нет отдельного указания на целые и дробные числа.

Таким образом, числа можно записывать в JavaScript с точкой или без нее.

var a = 25; // нет точки
var b = 80.05; // есть точка
Проверьте, посмотрите < / >

В обоих случаях тип данных является числом, и он одинаков, независимо от того, имеет ли число точку или нет.

В JavaScript можно использовать научную指数ную запись для сокращения非常大或 очень маленьких чисел, как показано в следующем примере:

let num1 = 957e8; // 95700000000
let num2 = 957e-8; // 0.00000957
Проверьте, посмотрите < / >

Числа в JavaScript считаются точными, до 15 знаков после запятой. Это означает, что числа будут округляться после 16 знака после запятой:

let num1 = 999999999999999; // Значение остается неизменным 999999999999999
let num2 = 9999999999999999; // Округление до 10000000000000000
Проверьте, посмотрите < / >

Внутреннее представление чисел

В отличие от других языков, JavaScript не определяет различных типов чисел, таких как целые числа, короткие целые числа, длинные целые числа, плавающие числа и т.д.

Числа JavaScript имеют 64-битную точность, что также называется двойной точностью.

Внутреннее представление основано на стандарте IEEE 754.

64 бита распределены между знаком, экспонентой и мантиссой числа, как показано ниже:

ИдентификаторЭкспонентаЧастное
1 bit11 bit52 bit
Bit 63Bits 62–52Bits 51–0

Сложение чисел и объединение строк

Из предыдущих глав можно узнать, что оператор + используется для сложения чисел и объединения строк.

Если это число, то сложат числа. Если это строка, то объединят строки.

Если сложить два числа, результат будет числом:

let x = 50;
let y = 10;
let z = x + y; // z = 60 (number)
Проверьте, посмотрите < / >

Если два строки, результат будет объединением строк:

let x = "50";
let y = "10";
let z = x + y; // z = 5010 (string)
Проверьте, посмотрите < / >

Если число и строка, результат будет объединением строк:

let x = 50;
let y = "10";
let z = x + y; // z = 5010 (string)
Проверьте, посмотрите < / >

Если в строке и числе, результат будет объединением строк:

let x = "50";
let y = 10;
let z = x + y; // z = 5010 (string)
Проверьте, посмотрите < / >

JavaScript вычисляет выражения слева направо. Разные последовательности могут привести к разным результатам.

В следующем примере сначала сложите 50 + 10, так как x и y — это числа, затем соедините 60 + "30", так как z — это строка:

let x = 50;
let y = 10;
let z = "30";
let sum = x + y + z; // sum = 6030 (string)
Проверьте, посмотрите < / >

Частая ошибка, ожидается результат 60:

let x = 50;
let y = 10;
let z = "The sum is: " + x + y;
Проверьте, посмотрите < / >

Вы можете использовать скобки, чтобы решить эту проблему:

let x = 50;
let y = 10;
let z = "The sum is: " + (x + y);
Проверьте, посмотрите < / >

Числовые строки и математические выражения

Строки JavaScript могут содержать числовые значения.

  let x = 50; // x — это число
  let y = "50"; // y - это строка

Если строка содержит числовое значение, вы можете выполнять математические выражения в JavaScript.

Можно выполнить деление:

let x = "50" / "10"; // x = 5
Проверьте, посмотрите < / >

Можно выполнить умножение:

let x = "50" * "10"; // x = 500
Проверьте, посмотрите < / >

Можно выполнить幂овую операцию:

let x = "5" ** "3"; // x = 125
Проверьте, посмотрите < / >

Можно выполнить инкремент:

let x = "50";
x++; // x = 51
Проверьте, посмотрите < / >

Можно выполнить вычитание:

let x = "50" - "10"; // x = 40
Проверьте, посмотрите < / >

Невозможно выполнить сложение:

let x = "50" + "10"; // x = 5010
Проверьте, посмотрите < / >

Примечание:Если добавить два строки, результатом будет串联 строк.

NaN в JavaScript - это незаконное число

В JavaScript NaN используется как слово для того, чтобы показать, что число не является законным числом.

Если вы пытаетесь выполнить математическое действие с числовыми и нечисловыми значениями, будет возвращен NaN.

var x = 50 / "oldtoolbag.com"; // x = NaN (Not a Number)
Проверьте, посмотрите < / >

Но если строка содержит числовое значение, вы можете использовать JavaScript для выполнения математического выражения:

var x = 50 / "10"; // x = 5
Проверьте, посмотрите < / >

Вы можете использовать глобальную функцию JavaScript isNaN()Функция для определения того, является ли значение числом:

var x = 50 / "oldtoolbag.com";
isNaN(x); // Возвращает true, потому что x не является числом
Проверьте, посмотрите < / >

Если присвоить значение NaN в переменную, используемую в операции NaN, даже если другой операнд является законным числом, это также приведет к значению:

var x = NaN;
var y = 27;
var z = x + y; // z = NaN
Проверьте, посмотрите < / >

NaN является числом; typeof NaN возвращает number:

typeof NaN; // Возвращает "number"
Проверьте, посмотрите < / >

Бесконечность в JavaScript

Infinity (положительная бесконечность) или -Infinity (отрицательная бесконечность), если вычисляемое число превышает максимальное число, доступное в JavaScript, то будет возвращено.

Для неопределенных значений также будут наблюдаться эти ситуации, например, при делении на ноль:

var x = 5 / 0; // Возвращает бесконечность
var y = -5 / 0; // Возвращает минус бесконечность
Проверьте, посмотрите < / >

Технически говоря, Infinity (положительная бесконечность) будет отображаться как 1.797693134862315E+308, когда число выходит за верхний предел числа в JavaScript.

Таким же образом, -Infinity (отрицательное бесконечность) будет отображаться как -1.797693134862316E+308, когда число выходит за нижний предел.

Infinity является числом: typeof Infinity возвращает number:

typeof Infinity; // возвращает "number"
Проверьте, посмотрите < / >

Число Infinity также можно использовать в цикле:

var num = 5;
while (num != Infinity) { 
// Этот код будет выполняться до num = ∞
}
Проверьте, посмотрите < / >

Основания JavaScript

По умолчанию, JavaScript отображает числа с основанием10дляОснованиеДробные.

Числа также можно выражать в шестнадцатеричном (основание 16), двоичном (основание 2) и восьмеричном (основание 8) виде.

Префикс шестнадцатеричного числа - 0x:

var x = 0xFF; // x = 255
Проверьте, посмотрите < / >

Префикс двоичного числа - 0b:

var x = 0b1111; // x = 15
Проверьте, посмотрите < / >

Не пишите цифру, начинающуюся с нуля (например, 0121). Если вы напишете число с префиксом нуля, JavaScript интерпретирует его как восьмеричное:

Вы можете использовать этотtoString()Метод возвращает числовой строку от 2 до 36.

в шестнадцатеричном видеОснование 16в десятеричном видеОснование 10в восьмеричном видеОснование 8в двоичном видеОснование 2.

var num = 255;
num.toString(10); // возвращает 255
num.toString(16); // возвращает ff
num.toString(8); // возвращает 377
num.toString(2); // возвращает 11111111
Проверьте, посмотрите < / >

Числовой элемент и числовой объект

Обычно, числа в JavaScript создаются из литералов:

var num = 50;

Но также можно использовать ключевое слово new для определения числа как объекта:

var num = new Number(50);

Чтобы проверить разницу между ними, мы初始化им числовой элемент и числовой объект.

var num1 = 50;
var num2 = new Number(50);
typeof num1 // возвращает number
typeof num2 // возвращает object
Проверьте, посмотрите < / >

Примечание:Не создавайте числа в виде объектов. Это снизит производительность и может привести к неожиданным результатам.

При использовании оператора == числа равны:

var num1 = 50;
var num2 = new Number(50);
document.write(num1 == num2); // Возвращает true, так как num1 и num2 имеют равные значения
Проверьте, посмотрите < / >

При использовании оператора === равные числа не равны, так как оператор === ожидает равных значений и типов:

var num1 = 50;
var num2 = new Number(50);
document.write(num1 === num2); // Возвращает false, так как num1 и num2 имеют различные типы
Проверьте, посмотрите < / >

Объекты не могут быть сравнены:

var num1 = new Number(50);
var num2 = new Number(50);
document.write(num1 == num2); // Возвращает false, так как num1 и num2 являются различными объектами
document.write(num1 === num2); // Возвращает false, так как num1 и num2 являются различными объектами
Проверьте, посмотрите < / >

Обратите внимание на различие между (==) и (===). При сравнении двух объектов JavaScript всегда будет возвращаться false.