Відмінності між версіями «Змінні та типи данних в JavaScript»
Рядок 199: | Рядок 199: | ||
</ul> | </ul> | ||
+ | |||
1.2.4. '''Перетворення до об'єктного типу''' | 1.2.4. '''Перетворення до об'єктного типу''' | ||
Рядок 243: | Рядок 244: | ||
У виразах, що з'єднують числові і рядкові значення операцією +, JavaScript перетворює числа в рядки, наприклад: | У виразах, що з'єднують числові і рядкові значення операцією +, JavaScript перетворює числа в рядки, наприклад: | ||
+ | |||
+ | <div class="code"> | ||
+ | <pre class="code">x = "Відповідь дорівнює " + 21 // повертає "Відповідь дорівнює 21" | ||
+ | y = 21 + " - ось відповідь" // повертає "21 - ось відповідь"</pre> | ||
+ | |||
+ | </div> | ||
+ | |||
+ | <p>В інших випадках JavaScript намагається перетворити рядок в число, наприклад:</p> | ||
+ | |||
+ | <div class="code"> | ||
+ | <pre class="code">a = "21" - 1 // повертає 20 | ||
+ | b = "21" + 1 // повертає 211</pre> | ||
+ | |||
+ | </div> |
Версія за 09:42, 22 квітня 2010
1. Типи данних
1.1. Опис типів даних
Мова JavaScript містить шість типів даних Undefined(невизначений), Null (нульовий), Boolean (логічний), String (строковий), Number (числовий) і Object (об'єктний). Ця відносно невелика кількість типів дозволяє, тим не менше, створювати повноцінні сценарії для виконання багатьох функцій.
1.1.1. Тип Undefined (невизначений)
Цей тип складається з єдиного значення undefined. Це значення, яке приймає змінна, яка оголошена в програмі, але якої ще не присвоєно ніякого значення.
1.1.2. Тип Null (нульовий)
Цей тип складається з єдиного значення null. Це значення означає нульове, порожне або неіснуюче посилання.
1.1.3. Тип Boolean (логічний)
Цей тип складається рівно з двох логічних значень: true (істина) і false (брехня).
1.1.4. Тип String (строковий)
Цей тип складається з усіх можливих текстових рядків. Кожен рядок представляє собою упорядкований масив з нуля або більше символів Unicode (тобто 16-бітових цілих чисел без знака), званих елементами рядка. Елементи рядка нумеруються, починаючи з нуля. Довжина рядка - це кількість елементів в ній; порожній рядок складається з нуля елементів.
1.1.5. Тип Number (числовий)
Цей тип має рівно 18437736874454810627 (тобто 264 - 253 + 3)64-бітовому формату плаваючих чисел подвійної точності IEEE 754 з тим єдиним винятком, що 9007199254740990 (тобто 253 - 2) різних значень "Не число" даного формату представляються в JavaScript одним значенням NaN. Ще два спеціальні значення - це додатня незкінченність і відємна нескінченність яким в JavaScript відповідають вираження + Infinity (або просто Inifinity) і -Infinity. Відзначимо також, що в даному форматі розрізняються позитивний нуль (+0 або 0) і негативний нуль (-0).
1.1.6. Тип Object (об'єктний)
Значенням цього типу є об'єкти. Об'єкт - це невпорядкований набір властивостей
1.2. Перетворення типів
JavaScript - слаботіпізірованнa мовa. Це означає, що в декларації змінної ми не вказуємо її тип і надалі можемо привласнювати їй значення будь-яких типів. Виконуюча система JavaScript сама виконує автоматичне перетворення типів даних в міру необхідності. Для явного перетворення типів використовуються методи Boolean, Number, Object та String.
Перетворення типів відбуваються за наступними правилами.
1.2.1 Перетворення до логічного типу
Вихідний тип | Результат |
---|---|
Undefined | false |
Null | false |
Boolean | без змін |
Number | false, якщо аргумент рівен +0, -0 або NaN; true в інших випадках |
String | false, якщо аргумент порожній рядок; true в інших випадках |
Object | true |
1.2.2. Перетворення до числового типу
Вихідний тип | Результат |
---|---|
Undefined | NaN |
Null | +0 |
Boolean | 1, якщо аргумент рівен true, і 0, якщо аргумент рівен false |
Number | без змін |
String | якщо рядок містить правильне число (можливо з пробілами перед та / або після нього), то це число; NaN в іншому випадку |
Object | результат перетворення значення об'єкта за замовчуванням |
1.2.3. Перетворення до рядкового типу
Вихідний тип | Результат |
---|---|
Undefined | "undefined" |
Null | "null" |
Boolean | "true", якщо аргумент рівен true, і "false", якщо аргумент рівен false |
Number | текстове представлення числа (див. нижче) |
String | без змін |
Object | результат перетворення значення об'єкта за замовчуванням |
Перетворення числа n у рядок відбувається за такими правилами:
- якщо n рівне NaN, то результат "NaN";
- якщо n рівне +0 або -0, то результат "0";
- якщо n відємне, то результат буде конкатенацією рядка "-" і результату перетворення в рядок числа -n;
- якщо n рівне некінченності, то результат "Infinity";
- в інших випадках нехай m, k и s такі цілі числа, що k >= 1, 10k-1 <= s < 10k, n рівне s x 10m-k и k найменьше з можливих. Відмітемо, що k це кількість цифр у десятковому представленні s , що s не діляться на 10 і що найменш значуща цифра s може не бути однозначно визначеною. Тоді
- якщо k <= m <= 21, то результат складається з k десятичних цифр s (без провідних нулів), за якими йдуть m-k символів '0';
- інакше, якщо 0 < m <= 21, то результат складається з m старших десяткових цифр s, за якими слідує десяткова точка '.' і k-m залишившихся десяткових цифр s;
- інакше, якщо -6 < m <= 0, то результат складається з символа '0', за якими слідує десяткова точка '.', -m символів '0' і k десяткових цифр s;
- інакше, якщо k = 1, то результат складається з єдиною цифри s, символа 'e', символа плюс '+' або мінус '-' в залежності від того, додатнє чи відємне m-1, за якими слідує десяткове представлення числа abs(m-1);
- інакше результат складається з старшої десяткового цифри s, за якою слідує десяткова точка '.' и k-1 залишившихся десяткових цифр s, символ 'e', символ плюс '+' або мінус '-' в залежності від того, додатнє чи відємне m-1, за якими слідує десяткове представлення числа abs(m-1).
1.2.4. Перетворення до об'єктного типу
Вихідний тип тип | Результат |
---|---|
Undefined | генерується виключення TypeError |
Null | генерується виключення TypeError |
Boolean | новий логічний об'єкт з даними значенням за замовчуванням |
Number | новий логічний об'єкт з даними значенням за замовчуванням |
String | новий рядковий об'єкт з даними значенням за замовчуванням |
Object | без змін |
1.2.5. Приклади неявних перетворень
У виразах, що з'єднують числові і рядкові значення операцією +, JavaScript перетворює числа в рядки, наприклад:
x = "Відповідь дорівнює " + 21 // повертає "Відповідь дорівнює 21" y = 21 + " - ось відповідь" // повертає "21 - ось відповідь"
В інших випадках JavaScript намагається перетворити рядок в число, наприклад:
a = "21" - 1 // повертає 20 b = "21" + 1 // повертає 211