Типи даних javascript: основні поняття, перевірка, перетворення

Якщо програміст працював з такими мовами, як C # або Java, він знає, що для оголошення змінної необхідно встановити статистичний тип даних, які будуть зберігатися у зазначеній змінній з самого початку. У разі, коли буде потрібно змінити значення зазначеної змінної на інший тип, система видасть помилку. На відміну від них, у JavaScript динамічний тип даних і немає необхідності вказувати, який тип буде зберігати ця змінна, так як в процесі виконання контексту, JS постарається вирішити задачу відповідно до заданим значеннями.

Основи даних у JavaScript

Основи даних у JavaScript

Дані JS поділяються на дві групи: примітивні та об`єкти. Перші включають в себе текстовий рядок (String), логічні дані-істинні або помилкові (Logical) і числа (Number). Існує ще два особливих примітивних типу: Null і Undefined. Вони демонструють взаємопов`язані невпорядковані типи даних JavaScript, які мають назву та мають властивості.

Об`єкт спеціально створюється програмістом, серед них є деякі спеціальні: глобальний, прототип, масиви, функції, клас, зумовлені класи JS, клас RegExp для управління регулярними виразами і пошуку шаблонів в тексті, клас помилок для зберігання інформації, пов`язаної з помилками. Перші мови програмування не використовували об`єкти, а лише змінні.

Змінні-це простір пам`яті комп`ютера, якому розробники призначають вміст переважно з числовим значенням, типом символу або рядком символів-буквено-цифровим значенням, що складається лише з тексту, змішаного з числами. Як приклад типу даних JavaScript можна визначити змінну "a", яка містить 32, і записати її, як:

a = 32.

Потім можна змінити значення " a " і зробити:

a = 78.

Або зробити " a "еквівалентним значенню іншої змінної "b", наприклад:

a = b,

Змінні є елементарними об`єктами: числом, символом, істинним або хибним значенням, в той час, як об`єкти є складними, які можуть бути утворені великою кількістю інформації. Але обидві форми займають однаковий простір пам`яті, який може бути більш-менш великим.

Примітивні типи

Примітивні типи

На відміну від об`єктів, примітивні типи даних JavaScript не є посилальними, тобто, коли роблять присвоєння значення з іншої змінної.

У JS існують такі примітивні типи:

  • логічний;
  • числовий;
  • рядкові;
  • нуль;
  • невизначений.

Логічні представляють одне з: "true" або "false".

  • var boo1 = true;
  • var boo2 = false;

У JS є лише один тип числа, він може бути написаний з десятковою крапкою або без неї. Число також буває:

  • +Infinity;
  • -Infinity;
  • NaN (не число).

var num1 = 32;

var num2 = + Infinity;

Рядки використовуються для збереження тексту. Вони повинні бути всередині подвійних або одинарних лапок. У JS рядки є незмінними.

var str1 = `Привіт, це я`;

var str2 = "Привіт, це я";

Змінна, яка не має значення, не визначена.

var test Var;

console.log (testVar); / / Не визначено

Boolean - це тип даних, що повертає одне з двох: істина / брехня. Тип даних JavaScript Boolean названий на честь математика Джорджа Буля, тому він завжди пишеться з великої літери. Можна продемонструвати принцип роботи даного типу на прикладі:

  1. Відкривають консоль JS і вводять кожне з наступних тверджень, натискаючи "Enter" після кожної дії, щоб побачити результат.
  2. Звертають увагу на те, що однорядковий коментар використовується після кожного оператора, щоб пояснити, що він означає.
  3. 1<10 / / 1 менше 10?
  4. 100> 2000 / / 100 більше, ніж 2000?
  5. 2 = = = 2 / / 2 точно дорівнює 2?
  6. false === false //
Функція Boolean

Функція Boolean повертає логічне значення змінної. Її також можна використовувати для пошуку логічного результату умови і виразу, це дозволяє JavaScript використовувати функціональний тип даних.

Незмінні символи

Символи-це новий примітивний тип у JS. Вони створюються за допомогою функції:

const mySymbol = Symbol(`mySymbol`).

Щоразу, коли програміст викликає цю функцію, створюється новий і унікальний символ. Вони можуть бути використані, як константи, для представлення таких понять, як кольори. Символи в основному використовуються як ключі властивостей і ніколи не конфліктують з будь - яким іншим ключем-символом або рядком. Наприклад, можна зробити об`єкт ітеративним, використовуваним через» for-of "цикл та інші мовні механізми, використовуючи символ, що зберігається в" Symbol.iterator " в якості ключа.

Незмінні символи

У рядку a символ використовується як ключ методу. Цей унікальний маркер робить об`єкт повторюваним і дозволяє використовувати «for-of» цикл. Неможливо привести Символи до рядків, оскільки існує примус або неявне перетворення типів даних JavaScript. Заборона примусу запобігає деяким помилкам, але також ускладнює роботу з символами.

Новий тип примітиву - це маркери, які служать унікальними ідентифікаторами. Програміст створює Символи за допомогою фабричної функції " Symbol ()", яка слабо схожа на "String" - повернення рядків, коли викликається функцією:

const symbol1 = Symbol();

Symbol () має необов`язковий рядковий параметр, який дозволяє дати новоствореному символу опис. Цей опис використовується, коли символ перетворюється на рядок через "toString ()» або" String ()».

Арифметичні оператори

JS, як і всі програмні мови, має вбудовану здатність математичних дій, як калькулятор. Вони виконують їх над числами або змінними, які представлені, як числа.

Арифметичні оператори

Оператор додавання, представлений знаком плюс ( + ), додає два значення і повертає суму.

var x = 2 + 2; // x returns 4

Оператор віднімання, представлений знаком мінус ( - ), віднімає два значення і повертає різницю.

var x = 10 - 7; // x returns 3

Оператор множення, представлений зірочкою ( * ), множить два значення і повертає добуток.

var x = 4 * 5; // x returns 20

Оператор ділення, представлений косою рискою ( / ), розділяє два значення і повертає коефіцієнт.

var x = 20 / 2; // x returns 10

Менш звичним є оператор модуля, який повертає залишок після поділу і представлений знаком відсотка (%).

var x = 10 % 3; // returns 1

Це означає, що «3» входить у «10» три рази, з " 1 " залишком.

Інкремент виконує дію, в якій число буде збільшено на одиницю за допомогою оператора приросту, представленого знаком подвійного плюса (++).

var x = 10;x++; // x returns 11

Це відбувається після призначення. Також можна написати, що відбувається до призначення. Для порівняння:

++x;

var x = 10;

var y = x++;

// y is 10, x is 11;

а також:

var x = 10;

var y = ++x;

// y is 11, x is 11.

Декремент-число буде зменшено на одиницю за допомогою оператора декременту, представленого подвійним знаком мінус (--).

var x = 10;x--;

// x returns 9

Як і вище, це також можна написати:--x;

Різновиди операторів JS:

  • оператор присвоювання;
  • арифметичні оператори інкременту та декременту;
  • оператори рівності;
  • реляційні оператори;
  • логічний оператор.

Функції true або false

Оператори порівняння оцінять рівність або різницю двох значень і повернуть "true" або»false". Вони зазвичай використовуються в логічних твердженнях. Два знаки рівності ( = = ) означають рівні в JS. Початківцям програмістам легко переплутати між одинарними, подвійними і потрійними знаками рівності, потрібно запам`ятати, що один знак рівності застосовує значення до змінної і ніколи не оцінює рівність.

var x = 8;

var y = 8;

x == y; // true

Це вільний тип рівності і буде повертати "true" навіть якщо замість числа використовується рядок.

var x = 8;

var y = "8";

x == y; // true

Три знаки рівності ( = = = ) означають сувору рівність у JS.

var x = 8;

var y = 8;

x === y; // true

Це більш часто використовувана і більш точна форма визначення рівності, ніж звичайна функція " equal ( = = )», так як для повернення потрібно, щоб тип і значення були однаковими true.

var x = 8;

var y = "8";

x === y; // false

Знак оклику, за яким слідує знак рівності (!= ), означає, що він не дорівнює в JS. Це прямо протилежне«=»", і буде перевірено лише значення, а не тип.

var x = 50;

var y = 50;

x != y; // false

Знак оклику, за яким слідують два знаки рівності (!= = ), означає суворе не Рівне. Це повна протилежність ( = = = ) і буде перевіряти, як значення, так і тип. Інший знайомий символ, менше ніж (<), перевірить, чи Значення ліворуч менше, ніж значення праворуч. Менше або дорівнює (<= )- те ж саме, що і вище, але так само так само матиме значення»true". Більше ніж (>) перевірить, чи Значення більше ліворуч, ніж значення праворуч. Значення, більше або Рівне (>= ), таке ж, як зазначено вище, але воно також буде дорівнює true.

Функції «true» або «false»

Динамічна перевірка типів

Типи даних і змінних в мові JavaScript є основною мови програмування. Багато помилок виконання в JS є помилками типу. Наприклад, коли намагаються помножити "a number" на "A string", отримують помилку у вигляді «Not a Number» поверненого значення. Іноді при виклику функцій і отримують помилку "undefined is not a function", це відбувається, коли намагаються отримати доступ до властивості «яке не визначено. Так як JS не може знайти властивість, то повертає його значення за замовчуванням в резервний: undefined. Інший поширена помилка, пов`язана з типом, коли намагаються змінити або отримати доступ до властивості зі значення, яке є null або undefined. Тут немає таких конструкторів, як Undefined або Null.

Динамічна перевірка типів

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

Динамічна перевірка типу даних JavaScript виконується через бібліотеку TypeRight. Серед інших особливостей він використовує підхід для реалізації наступних псевдокласів, єдиною метою яких є бути правими сторонами instanceof оператора:

  • PrimitiveUndefined.
  • PrimitiveNull.
  • PrimitiveBoolean.
  • PrimitiveNumber.
  • PrimitiveString.
  • PrimitiveSymbol.

Наразі typeright не надає клас для перевірки факту, чи є значення об`єктом, але його можна легко додати.

Контейнери змінних

Змінні в JS-це контейнери, які містять повторно використані дані. До ES2015 змінні JavaScript оголошувались виключно за допомогою ключового слова var:

  • var x;
  • var y;
  • var z;

Сьогодні змінні задаються типами: var, let і const. Вони по-своєму унікальні і служать для підвищення ефективності розробки коду, однак рекомендується використовувати: let - по можливості і const-всякий раз, коли значення змінної повинно залишатися постійним. Використання змінних для зберігання даних є основою мови і складається з трьох частин.

Оголошення змінної - тут змінна зареєстрована у відповідній області видимості. Приклади оголошень змінних:

  • var x;
  • var cup;
  • var car.

Ініціалізація відбувається при оголошенні змінної. Тут їй призначається пам`ять або простір за допомогою движка JavaScript. Через це, як тільки змінна оголошена, вона приймає значення undefined навіть перед присвоєнням.

Присвоєння змінної - є найбільш важливим кроком при використанні. Тут змінній присвоюються дані, які є значеннями за допомогою оператора присвоєння»=".

Значення в JavaScript приймають один із стандартних типів даних:

  • рядок;
  • число;
  • логічний;
  • нуль;
  • невизначений.

Синтаксис для призначення типів можна побачити вище лише з рядками, що мають одинарні або подвійні лапки. Також логічні значення можуть бути або істиною, або брехнею. При іменуванні змінних в JavaScript необхідно дотримуватися певних правил, а саме:

  1. Імена повинні починатися з малої літери.
  2. Імена не можуть містити символи або починатися з символів.
  3. Імена не можуть починатися з цифри.
  4. Імена можуть містити поєднання рядків верхнього регістру, рядків нижнього регістру та цифр.
Контейнери змінних

Способи ініціалізації JS

Змінна ініціалізується, коли її вміст або значення встановлюються вперше. Наприклад, ціна = 22,55-це може бути спосіб ініціалізації змінної. Вона може бути оголошена і ініціалізована одночасно. Наприклад, можна написати змінну "ціна = 22,55", з якою змінна була оголошена та ініціалізована в одному рядку. JS не вимагає оголошення типу змінних і навіть дозволяє змінній зберігати вміст різних типів у різний час. Наприклад, можна використовувати "ціну = 22,55", а в більш пізньому місці написати ціну = «дуже дорого». Це те, що в інших мовах може призвести до помилки, але приймається JavaScript.

Способи ініціалізації JS

JS дозволяє використовувати змінну без її оголошення. Багато в чому мова програмування потрібно оголосити змінну, перш ніж її можна буде використовувати, але JS не зобов`язує. Коли мова знаходить не оголошену змінну, вона автоматично створює змінну і дозволяє її використовувати.

Неправильне використання ключового слова " var " може призвести до помилки, через яку JS перестає працювати, тобто веб-сторінка відображатиметься неправильно, var використовується лише для оголошення змінної, її не можна використовувати ні для чого іншого. Як тільки змінна буде оголошена, вона буде використана без попереднього ключового слова var. Якщо змінна вже оголошена, JavaScript спробує продовжити та отримати її.

Демонстрація роботи

Можна продемонструвати роботу коду, щоб закріпити основні поняття типів даних мови JavaScript, програма зчитує код, вказаний на малюнку і збережений у файлі розширення html.

Демонстрація роботи типів

Після візуалізації результату переконуються, що веб-сторінка відображається нормально, тобто JavaScript виконується нормально, а очікуваний результат повинен показати наступне:

  1. Змінна ціна дійсна: undefined (прийняти).
  2. Змінна data1 дійсна: null (прийняти).
  3. Змінна ціна дійсна: 32,55 (прийняти).
  4. Подвійна ціна: 65,1 (прийняти).
  5. Сума, отримана в результаті множення ціни на кількість, становить: 325,5 (прийняти).
  6. Змінна ціна зараз: дуже дорога (прийняти).
  7. Подвійна ціна зараз: NaN (прийняти).
  8. Змінна ціна була оголошена вдруге і тепер дійсна: 99,55 (прийняти).
  9. Змінна $ discount_applied: 0,55( прийняти).
Демонстрація роботи

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

Статті на тему