Назад Вперед Зміст


Типізація в мовах програмування.Типи даних


Типізація в мовах програмування.

Мови програмування по типізації прийнято ділити на дві великі групи - що типізуються і не типізуються (бестипові). До першої групи, наприклад відносяться C, Python, C#, PHP і Pascal, а до другої - мова асемблера, Forth і Brainfuck.

Оскільки "бестипова типізація" за своєю суттю проста, далі вона ні на які інші види не ділиться. А ось мови, що типізуються, розділяються ще на декілька пересічних категорій:

  1. Статична / динамічна типізація. Статична визначається тим, що кінцеві типи змінних і функцій встановлюються на етапі компіляції. Тобто вже компілятор на 100 відсотків впевнений, який тип де знаходиться. У динамічній типізації усі типи з'ясовуються вже під час виконання програми.

    Приклади:

    Статична: C, Java, C#;

    Динамічна: Python, JavaScript, Ruby.

  2. Сильна / слабка типізація (також іноді говорять строга / нестрога). Сильна типізація виділяється тим, що мова не дозволяє змішувати у виразах різні типи і не виконує автоматичні неявні перетворення, наприклад не можна відняти з рядка число. Мови із слабкою типізацією виконують безліч неявних перетворень автоматично, навіть якщо може статися втрата точності або перетворення неоднозначно.

    Приклади:

    Сильна: Java, Python, Haskell, Lisp;

    Слабка: C, JavaScript, Visual Basic, PHP.

  3. Явна / неявна типізація. Мови, що Явно-типізуються, відрізняються тим, що тип нових змінних / функцій / їх аргументів треба задавати явно. Відповідно мови з неявною типізацією перекладають це завдання на компілятор / інтерпретатор.

    Приклади:

    Явна: C, D, C#

    Неявна: PHP, Lua, JavaScript

Також треба помітити, що усі ці категорії перетинаються, наприклад мова C має статичну слабку явну типізацію, а мова Python - динамічну сильну неявнуJavaScript- динамічну слабку неявну.

Типи даних

Отже, мова програмування JavaScript, відноситься до мов, які називаються мовами із слабкою динамічною типізацією.

Динамічна типізація означає, що змінна зв'язується з типом у момент надання значення. Тому тип змінної може змінюватися в процесі виконання програми.

Змінна в JavaScript оголошується шляхом привласнення їй деякого значення. Тип змінної визначається автоматично, по її виду.

Числа

    У сучасному JavaScript існує два типи чисел :
  1. Тип number. Ці числа зберігаються в 64-бітовому форматі, який також називають "числа з плаваючою точкою подвійної точності".Це числа, які ми використовуватимемо найчастіше.
  2. Тип BigInt. Ці числа дають можливість працювати з цілими числами довільної довжини.Вони потрібні досить рідко і використовуються у випадках коли необхідно працювати зі значеннями більш ніж 253 чи менш ніж - 253

Наприклад, числа типу 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

Спеціальне значення null не відноситься ні до одного з типів, описаних вище.

У JavaScript null НЕ є "посиланням на неіснуючий об'єкт" або "нульовим покажчиком" як в деяких інших мовах.

Це просто спеціальне значення, яке є "нічого", "порожньо" або "значення невідоме".

Значення undefined

Значення undefined означає, що "значення не було присвоєне". Якщо змінна оголошена, але їй не присвоєно ніякого значення, то її значенням буде undefined.

Перетворення типів

Неявні перетворення

Найчастіше оператори і функції автоматично приводять передані їм значення до потрібного типу.

Наприклад, alert автоматично перетворить будь-яке значення до рядка.

Математичні оператори (окрім +) перетворять значення до чисел.

Якщо в сумі (+) містяться і числові і рядкові змінні те числові змінні автоматично наводяться до рядкового.

Явні перетворення

    Існує 3 найширше використовуваних перетворень: рядкового, чисельного і логічного.

  1. Рядкове - Відбувається, коли нам треба щось вивести. Може бути викликано з допомогою String (value). Для примітивних значень працює очевидним чином.

  2. Чисельне - Відбувається в математичних операціях. Може бути викликано з допомогою Number (value).

    Перетворення рядка в число може бути виконане з допомогою унарного плюса, який ставиться перед строковою змінною і действут також, як функція Number.

    Скрипт нижчий, виведе спочатку 23 (складе як рядки), а потім виведе 5, складе як числа.

    Скрипт нижчий, виведе спочатку undefined, а потім виведе NaN.

    Перетворення підкоряється правилам:
    ЗначенняСтає.
    undefined NaN
    null 0
    true / false 1 / 0
    string Пробільні символи по краях обрізуються. Далі, якщо залишається порожній рядок, то 0, інакше з непорожнього рядка "прочитується" число.При помилці результат NaN.

  3. Логічне - Відбувається в логічних операторах. Може бути викликано з допомогою Boolean (value).

    Підкоряється правилам:
    Значення Стає.
    0, null, undefined, NaN "" false
    будь-яке іншеtrue


Назад Вперед Зміст