ЛУЧШИЙ САЙТ ДЛЯ РАЗРАБОТЧИКОВ
×

JavaScript учебник

JS HOME JS Introduction JS Where To JS Output JS Statements JS Syntax JS Comments JS Variables JS Operators JS Arithmetic JS Assignment JS Data Types JS Functions JS Objects JS Scope JS Events JS Strings JS String Methods JS Numbers JS Number Methods JS Arrays JS Array Methods JS Array Sort JS Array Iteration JS Dates JS Date Formats JS Date Get Methods JS Date Set Methods JS Math JS Random JS Booleans JS Comparisons JS Conditions JS Switch JS Loop For JS Loop While JS Break JS Type Conversion JS Bitwise JS RegExp JS Errors JS Debugging JS Hoisting JS Strict Mode JS this Keyword JS Style Guide JS Best Practices JS Mistakes JS Performance JS Reserved Words JS Versions JS Version ES5 JS Version ES6 JS JSON

JS Forms

JS Forms Forms API

JS Objects

Object Definitions Object Properties Object Methods Object Constructors Object Prototypes

JS Functions

Function Definitions Function Parameters Function Invocation Function Call Function Apply Function Closures

JS HTML DOM

DOM Intro DOM Methods DOM Document DOM Elements DOM HTML DOM CSS DOM Animations DOM Events DOM Event Listener DOM Navigation DOM Nodes DOM Collections DOM Node Lists

JS Browser BOM

JS Window JS Screen JS Location JS History JS Navigator JS Popup Alert JS Timing JS Cookies

JS AJAX

AJAX Intro AJAX XMLHttp AJAX Request AJAX Response AJAX XML File AJAX PHP AJAX ASP AJAX Database AJAX Applications

JS JSON

JSON Intro JSON Syntax JSON vs XML JSON Data Types JSON Objects JSON Arrays JSON Parse JSON Stringify JSON PHP JSON HTML JSON JSONP

JS References

JavaScript Objects HTML DOM Objects


JavaScript Номера


JavaScript имеет только один тип чисел. Числа могут быть записаны с десятичными знаками или без них.


Пример

var x = 3.14;    // A number with decimals
var y = 3;       // A number without decimals

Очень большие или дополнительные малые числа могут быть написаны с помощью научной (экспоненты) нотации:

Пример

var x = 123e5;    // 12300000
var y = 123e-5;   // 0.00123


Номера JavaScript всегда 64-бит с плавающей запятой

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

Номера JavaScript всегда хранятся в виде чисел с плавающей запятой двойной точности, следуя международному стандарту IEEE 754.

Этот формат хранит числа в 64 бит, где число (фракция) хранится в битах 0 до 51, экспонента в битах 52 до 62 и знак в бит 63:

Value (aka Fraction/Mantissa) Exponent Sign
52 bits (0 - 51)  11 bits (52 - 62) 1 bit (63)

Точность

Целые числа (цифры без обозначения периода или экспоненты) являются точными до 15 цифр.

Пример

var x = 999999999999999;   // x will be 999999999999999
var y = 9999999999999999;  // y will be 10000000000000000

Максимальное число десятичных знаков — 17, но Арифметика с плавающей запятой не всегда 100% точна:

Пример

var x = 0.2 + 0.1;         // x will be 0.30000000000000004

Чтобы решить проблему выше, она помогает умножить и разделить:

Пример

var x = (0.2 * 10 + 0.1 * 10) / 10;       // x will be 0.3


Добавление чисел и строк

Предупреждение!!

JavaScript использует оператор + для сложения и сцепления.

Номера добавляются. Строки объединяются.

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

Пример

var x = 10;
var y = 20;
var z = x + y;           // z will be 30 (a number)

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

Пример

var x = "10";
var y = "20";
var z = x + y;           // z will be 1020 (a string)

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

Пример

var x = 10;
var y = "20";
var z = x + y;           // z will be 1020 (a string)

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

Пример

var x = "10";
var y = 20;
var z = x + y;           // z will be 1020 (a string)

Распространенной ошибкой является ожидать, что этот результат будет 30:

Пример

var x = 10;
var y = 20;
var z = "The result is: " + x + y;

Распространенной ошибкой является ожидать, что этот результат будет 102030:

Пример

var x = 10;
var y = 20;
var z = "30";
var result = x + y + z;

Компилятор JavaScript работает слева направо.

Первые 10 + 20 добавляется, потому что x и y оба числа.

Затем выполняется сцепление 30 + "30", поскольку z является строкой.


Числовые строки

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

var x = 100;         // x is a number

var y = "100";       // y is a string

JavaScript будет пытаться преобразовать строки в числа во всех числовых операциях:

Это будет работать:

var x = "100";
var y = "10";
var z = x / y;       // z will be 10

Это также будет работать:

var x = "100";
var y = "10";
var z = x * y;       // z will be 1000

И это будет работать:

var x = "100";
var y = "10";
var z = x - y;       // z will be 90

Но это не будет работать:

var x = "100";
var y = "10";
var z = x + y;       // z will not be 110 (It will be 10010)

В последнем примере JavaScript использует оператор + для сцепления строк.


NaN-не число

NaN — это зарезервированное слово JavaScript, указывающее, что номер не является юридическим номером.

Попытка выполнить арифметические действия с нечисловой строкой приведет к NaN (не числу):

Пример

var x = 100 / "Apple";  // x will be NaN (Not a Number)

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

Пример

var x = 100 / "10";     // x will be 10

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

Пример

var x = 100 / "Apple";
isNaN(x);               // returns true because x is Not a Number

Следите за НАН. Если вы используете NaN в математической операции, результатом будет также NaN:

Пример

var x = NaN;
var y = 5;
var z = x + y;         // z will be NaN

Или результат может быть сцепление:

Пример

var x = NaN;
var y = "5";
var z = x + y;         // z will be NaN5

NaN — число: typeof NaN возвращает число:

Пример

typeof NaN;            // returns "number"

Бесконечности

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

Пример

var myNumber = 2;
while (myNumber != Infinity) {          // Execute until Infinity
    myNumber = myNumber * myNumber;
}

Деление на 0 (ноль) также генерирует бесконечность:

Пример

var x =  2 / 0;          // x will be Infinity
var y = -2 / 0;          // y will be -Infinity

Бесконечность-это число: typeof Infinity возвращает число.

Пример

typeof Infinity;        // returns "number"

Шестнадцатеричное

JavaScript интерпретирует числовые константы как шестнадцатеричные, если им предшествует 0 x.

Пример

var x = 0xFF;           // x will be 255

Никогда не записывайте число с ведущим нулем (например, 07).
Некоторые версии JavaScript интерпретируют числа как восьмеричной, если они написаны с ведущим нулем.

По умолчанию JavaScript отображает числа в виде базовых 10 десятичных знаков.

Но можно использовать метод ToString () для вывода чисел из базы 2 в базовый 36.

Шестнадцатеричное основание 16. Десятичное число является базовым 10. Восьмеричной является базой 8. Двоичный файл является базовым 2.

Пример

var myNumber = 32;
myNumber.toString(10);   // returns 32
myNumber.toString(32);  // returns 10
myNumber.toString(16);  // returns 20
myNumber.toString(8);   // returns 40
myNumber.toString(2);   // returns 100000

Числа могут быть объектами

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

var x = 123;

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

var y = новый номер (123);

Пример

var x = 123;
var y = new Number(123);

// typeof x returns number
// typeof y returns object

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

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

Пример

var x = 500;             
var y = new Number(500);

// (x == y) is true because x and y have equal values

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

Пример

var x = 500;             
var y = new Number(500);

// (x === y) is false because x and y have different types

Или даже хуже. Невозможно сравнить объекты:

Пример

var x = new Number(500);             
var y = new Number(500);

// (x == y) is false because objects cannot be compared

Обратите внимание на разницу между (x = = y) и (x = = y).
Сравнение двух объектов JavaScript всегда будет возвращать false.