Мови програмування по типізації прийнято ділити на дві великі групи - що типізуються і не типізуються (бестипові). До першої групи, наприклад відносяться C, Python, C#, PHP і Pascal, а до другої - мова асемблера, Forth і Brainfuck.
Оскільки "бестипова типізація" за своєю суттю проста, далі вона ні на які інші види не ділиться. А ось мови, що типізуються, розділяються ще на декілька пересічних категорій:
Статична: C, Java, C#;
Динамічна: Python, JavaScript, Ruby.
Сильна: Java, Python, Haskell, Lisp;
Слабка: C, JavaScript, Visual Basic, PHP.
Явна: C, D, C#
Неявна: PHP, Lua, JavaScript
Приклади:
Приклади:
Також треба помітити, що усі ці категорії перетинаються, наприклад мова C має статичну слабку явну типізацію, а мова Python - динамічну сильну неявнуJavaScript- динамічну слабку неявну.
Отже, мова програмування JavaScript, відноситься до мов, які називаються мовами із слабкою динамічною типізацією.
Динамічна типізація означає, що змінна зв'язується з типом у момент надання значення. Тому тип змінної може змінюватися в процесі виконання програми.
Змінна в JavaScript оголошується шляхом привласнення їй деякого значення. Тип змінної визначається автоматично, по її виду.
Наприклад, числа типу number : n=123; m=-23.5;
Окрім звичайних чисел, існують так звані "спеціальні числові значення", які відносяться до цього типу даних : Infinity і NaN.
Infinity є математичною нескінченністю. Це особливе значення, яке більше будь-якого числа. Ми можемо отримати його в результаті ділення на нуль.
NaN означає обчислювальну помилку. Це результат неправильної або невизначеної математичної операції, наприклад, якщо ми не число множимо на число.
Рядок (string) в JavaScript має бути поміщений в лапки.
str = "Привіт";
str2 = 'Одинарні лапки теж підійдуть';
Між подвійними і одинарними лапками в JavaScript немає різниці.
У JavaScript немає окремого типу даних для одного символу. У деяких мовах, наприклад C і Java, для зберігання одного символу, наприклад "a" або " існує окремий тип. У мовах C і Java це char.
У JavaScript подібного типу немає, є тільки тип string. Рядок може містити один символ або багато. Довжина рядка не обмежена.
Вміст рядка в JavaScript не можна змінити. Не можна узяти символ посередині рядки і замінити
Тип boolean може набувати тільки два значення: true (істина) і false (брехня). Такий тип, як правило, використовується для зберігання цих значень.
Наприклад: pr=true; f=false;
Спеціальне значення null не відноситься ні до одного з типів, описаних вище.
У JavaScript null НЕ є "посиланням на неіснуючий об'єкт" або "нульовим покажчиком" як в деяких інших мовах.
Це просто спеціальне значення, яке є "нічого", "порожньо" або "значення невідоме".
Значення undefined означає, що "значення не було присвоєне". Якщо змінна оголошена, але їй не присвоєно ніякого значення, то її значенням буде undefined.
Найчастіше оператори і функції автоматично приводять передані їм значення до потрібного типу.
Наприклад, alert автоматично перетворить будь-яке значення до рядка.
Математичні оператори (окрім +) перетворять значення до чисел.
Якщо в сумі (+) містяться і числові і рядкові змінні те числові змінні автоматично наводяться до рядкового.
Існує 3 найширше використовуваних перетворень: рядкового, чисельного і логічного.
Рядкове - Відбувається, коли нам треба щось вивести. Може бути викликано з допомогою String (value). Для примітивних значень працює очевидним чином.
Чисельне - Відбувається в математичних операціях. Може бути викликано з допомогою Number (value).
|
Перетворення рядка в число може бути виконане з допомогою унарного плюса, який ставиться перед строковою змінною і действут також, як функція Number.
Скрипт нижчий, виведе спочатку 23 (складе як рядки), а потім виведе 5, складе як числа.
|
Скрипт нижчий, виведе спочатку undefined, а потім виведе NaN.
|
Перетворення підкоряється правилам:
| Значення | Стає. |
|---|---|
| undefined | NaN |
| null | 0 |
| true / false | 1 / 0 |
| string | Пробільні символи по краях обрізуються. Далі, якщо залишається порожній рядок, то 0, інакше з непорожнього рядка "прочитується" число.При помилці результат NaN. |
Логічне - Відбувається в логічних операторах. Може бути викликано з допомогою Boolean (value).
Підкоряється правилам:
| Значення | Стає. |
|---|---|
| 0, null, undefined, NaN "" | false |
| будь-яке інше | true |