Відмінності між версіями «Змінні та типи данних в JavaScript»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
 
(не показані 126 проміжних версій 7 учасників)
Рядок 1: Рядок 1:
<td><h1>Змінні, величини, імена й літерали</h1>
+
= '''Змінні''' =
<p><strong>Значення</strong></p>
+
<p><b>Javascript</b> розпізнає наступні типи величин:</p>
+
<ol>
+
<li> Числа, типу 42 або 3.14159 </li>
+
  
<li> Логічні (Булевы), значення true або false </li>
+
У сценаріях JavaScript можна використовувати змінні, звертаючись до них за назвою. Змінні можуть бути глобальними або локальними. Глобальні змінні досяжні з довільного місця сценарію. Область дії локальних змінних обмежено кодом функції, всередині якого оголошено ці змінні. При створенні сценаріїв JavaScript рекомендовано оголошувати змінні до їхнього використання та надавання початкових величин. Це спрощує відлагодження сценаріїв і зменшує ймовірність помилки.
<li> Рядка, типу "Howdy!"</li>
+
<li>Порожній покажчик, спеціальне ключове слово, що позначає нульове значення</li>
+
</ol>
+
<p> Це відносно малий набір типів значень, або <i>типів даних</i>, які дозволяють вам виконувати функції у ваших додатках. Не існує ніякої явної відмінності між цілими числами й реально-оціненими числа. І при цьому не існує явного типу даних date в Navigator. Однак, об'єкт date і зв'язані вбудовані функції дозволяють вам обробляти дані</p>
+
<p>Об'єкти й функції - фундаментальні елементи в мові. Ви можете думати про об'єкти як про іменовані контейнери для значень, і про функції як про процедури, які ваш додаток може виконувати</p>
+
<p><font size=+1><b>Перетворення типів даних</b></font></p>
+
  
<p>Тип змінної залежить від того, який тип інформації в ній зберігається. <b> Javascript</b> не є жорстко типізованим мовою. Це означає, що ви не повинні точно визначати тип даних змінної, у момент її створення. Тип змінної привласнюється змінної автоматично протягом виконання скрипта. Так, наприклад, ви можете визначити змінну в такий спосіб: </p>
+
==Оголошення змінної==
<font color="purple"><PRE>var answer=42</PRE> </font>
+
А пізніше, ви можете привласнити тієї ж змінн значення, що наприклад випливає:
+
<font color="purple">
+
<PRE>answer="Thanks for all the fish..." </PRE></font>
+
Або розглянемо наступне вираження:
+
<font color="purple"><pre>//приклад
+
var onestring="1"
+
var oneint=1
+
var oneconcatenate=onestring+oneint
+
// У результаті виходить "11"
+
var oneaddition=oneint+onestring
+
// У результаті виходить 2 </pre></font> 
+
<p>
+
  
У першій операції додавання перший операнд є рядком. <b> Javascript</b> припускає, що проводиться операція із двома рядками. Коли <b> Javascript</b> виявляє в якості другого операнда ціле число, він у відповідності зі своїми виставами перетворить змінну в рядок.
+
Оголосити змінну у JavaScript можна при допомозі ключового слова ''var'', таким чином:
<p>Оскільки <b> Javascript</b> вільно типізований мова, те це не викличе  помилки.
+
'''var''' ''назва змінної''
<p> Тому що <b> Javascript</b> не підтримує ніяких методів і властивостей для визначення типу поточного значення змінної, дуже важливо внимательноотслеживать типи змінних щоб уникнути несподіваних результатів.
+
''Тип змінної'' JavaScript надає лише при наданні змінній певної величини. Після такого надання назва змінної стане доступною, навіть якщо її попередньо не було оголошено.
 +
<br>''Назва змінної:''
 +
* має починатися начинаться з літери латиниці або символів "_" чи "$", містити лише літери латиниці, цифри і символи "_" та "$";
 +
* не може збігатися з жодним з таких зарезервованих слів JavaScript:
 +
[[Файл:spisok_slov.JPG]]<br>
 +
<br>'''Надання змінним величини''' здійснюють за допомогою оператора "=". Наприклад, оголошення змінної і надання їй величини текстового рядка можна здійснити так:
 +
var Hello;
 +
Hello = "Привіт!";
 +
При цьому у довільному місці програми змінній ''Hello'' можна надати числельну величину, наприклад, так:
 +
Hello = 4;
 +
Після здійснення такої операції тип змінної буде змінено, але у процесі інтерпретації сценарію не буде зроблено жодного попереджувального повідомлення. Змінній можна надати спеціальну величину ''null''. У цьому випадку змінній не призначено жоден з типів.<br>
 +
<br>Тип ''число'' допускає використання різних форматів, наприклад,:
 +
:25 — запис цілого числа у десятковій системі числення;
 +
:0137 — запис цілого числа у вісімковій системі числення;
 +
:0xFF — запис цілого числа у шістнадцятковій системі числення;
 +
:386.7 — запис дійсного числа с плавающей десятковою крапкою;
 +
:25e5 або 25E5 — запис дійсного числа в науковій нотації, дорівнює 25 ∙ 10<sup>5</sup>.<br><br>
 +
:Якщо результат виконання операцій з числами не можна подати числом, то повертається величина NaN (від англійською ''Not a Number'').
 +
::    Тип ''текстовий рядок'' описує послідовність символів між лапками (' або ", але одного вигляду). Слід зауважити, порожній рядок відмінний від ''null''.
 +
:    Тип ''логічних даних'' передбачає лише дві величини: ''true'' і ''false''.
 +
::    Якщо змінну було оголошено, але їй не було надано величини, вона має ''невизначений тип''.
 +
:    Якщо у виразах зустрічаються змінні різних типів, інтерпретатор JavaScript може автоматично перетворити числові дані в рядки тексту. Перетворення рядка у число виконують лише з допомогою спеціальних функцій ''parseInt'' (у ціле) і ''parseFloat'' (у дійсне).
  
<p> Взагалі, у вираженнях строкові значення, що включають числові й, <b> Javascript</b> перетворює числові значення в строкові. Наприклад, розглянемо наступні твердження:
+
= '''Типи даних''' =
<font color="purple"><pre>x="The answer is " + 42
+
y=42 + " is the answer."</pre> </font>
+
<p>
+
Перше твердження буде рядок "The answer is - 42 ". Друге твердження повертає рядок " 42 - The answer is".
+
<p> <b> Javascript</b> надає кілька спеціальних функцій для керування строковими й числовими значеннями:
+
<ol>
+
  
<li><em>eval</em> обчислює рядок, що представляє будь-які <b> Javascript</b> літерали або змінні, перетворюючи її в число. </li>
+
Мова JavaScript містить шість типів даних: Undefined (непроникний), Null (нульовий), Boolean (логічний), String (рядковий), Number (числовий) і Object (об'єктний). Це відносно незначна кількість типів дозволяє, тим не менше, створювати повноцінні сценарії для виконання багатьох функцій.
<li><em>parseint</em> перетворює рядок у ціле число в зазначеній підставі системи числення, якщо можливо. </li>
+
:Базові типи - це String (рядковий), Number (числовий) і Boolean (логічний).
<li><em>parsefloat</em> перетворює рядок у число із плаваючою крапкою, якщо можливо.
+
У Javascript є і об'єктні типи даних і елементарні, які можна інтерпретувати як об'єкти.
</li>
+
<center><br>[[Файл:типы_данных_JS.JPG]]<br></center>
</ol>
+
<br>Елементарні - створюються простою вказівкою даних:
 +
var orange = "Апельсин"
 +
Об'єктні - наприклад, через оператор new:
 +
var orange = new String("Апельсин")
 +
На практиці, хоча для кожного елементарного типу є відповідний об'єкт, використовувати їх не рекомендується. Це - відмерла частина мови.
 +
var ok = new Boolean(true) // не треба
 +
Елементарні типи автоматично інтерпретуються як об'єкти при викликах методів, тому можна, визначати довжину рядка як:
 +
alert("Апельсин".length)
 +
Тому іноді кажуть, що в javascript - всі об'єкти. Так зручно думати, але певна різниця все ж є.
 +
<br>Наприклад, typeof видасть різний результат:
 +
alert(typeof "test")
 +
<center>[[Файл:результат_1.JPG]]<br></center>
 +
alert(typeof new String("test"))
 +
<center>[[Файл:результат_2.JPG]]<br></center>
 +
<br>Це - ще одна причина уникати використання об'єктів там, де існує елементарний тип: менше плутанини.<br>
 +
<br>Перетворення типу можна явним чином зробити через його назву:
 +
var test = Boolean("something") // true
 +
Крім усім відомих типів даних - в javascript є спеціальне значення undefined, яке, умовно кажучи, позначає що "даних немає". Не null, а даних немає. Розумійте як хочете.
  
<p><font size=+1><b>Змінні</b></font>
+
==Тип Number (числовий)==
<p>Ви використовуєте змінні, щоб зберігати значення у вашому додатку. Ви даєте цим змінним <I>імена</I>, по яких ви посилаєтеся на них, і існують деякі правила, яким імена повинні відповідати.
+
<p>Ідентифікатор <b> Javascript</b> або <I>ім'я</I> повинні початися із символу або символом підкреслення ("_"); послідовність символів також можуть бути цифри (0-9). Символи включають знаки з "A" до "Z" (верхнього регістру) і знаки з "a" до "z" (нижній регістр). <b> Javascript</b> ураховує регістр.
+
  
<p> Деякі приклади припустимих імен:
+
Цей тип має формат з плаваючою комою і може задаватись в довільній формі, наприклад, 1.349, 12, .0529,-1.5e10. Запис цілих чисел можлива в вісімковій (починається з O) або шістнадцятковій (починається з Ox) формі. Якщо в ході операцій виникає помилка (наприклад, при діленні на нуль), то змінна отримає значення NaN (not-a-number, що не число).<br>
<p>    Number_hits <br>
+
<br>Всі числа зберігаються у форматі float64, т.е 8 байт з плаваючою крапкою. У цьому форматі не завжди можливі точні обчислення.
    temp99 <br>
+
Наприклад,
    _name
+
alert(0.1+0.2)  // виведе не 0.3!
<p><font size=+1><b>Область дії змінних</b></font>
+
<center>[[Файл:результат_3.JPG]]<br></center>
<p> <i>Область дії</i> змінних - те, де ви можете використовувати їх у скрипте. В <b>Javascript</b>, існує дві області дії, які змінні можуть мати:
+
<br>
 +
===Цікаві методи===
  
<p>    <b>Глобальна:</b> Ви можете використовувати змінну де-небудь у додатку. <br>
+
====Округлення до потрібної точності після коми====
    <b>Локальна:</b> Ви можете використовувати змінну усередині поточної функції.
+
<p> Щоб оголосити локальну змінну усередині функція, використовуйте ключове слово <b>var</b>, наприклад:
+
<font color="purple" ><PRE> var total=0; </PRE> </font>
+
  
<p>Щоб оголосити глобальну змінну, оголосите змінну призначення, яка просто привласнює значення змінної (або у функції або поза функцією), наприклад:
+
Для цього використовується метод toFixed.
<font color="purple" ><PRE> total=0; </PRE> </font>
+
0.1234.toFixed(2) = 0.12
<p> Найкраще повідомляти глобальні змінні на початку вашого скрипта, так, щоб функції успадковували змінну і її значення.
+
<p><font size=+1><b>Літерали</b></font>
+
<p>Літерали - спосіб, яким ви представляєте значення в <b> Javascript</b>. Установлені значення, які ви <I>буквально (literally)</I> представляєте у вашому джерелі, і - не змінні. Приклади літералів включають:
+
<p>  42 <br>
+
  
  3.14159 <br>
+
====Конвертація у число====
  "Бути або не бути"
+
<br>
+
<br>
+
<font size=+1><b>Цілі числа (Integers)</b></font>
+
<p>Цілими називають числа виду 1, 164, 102390. Вони можуть бути виражені в десятковому ( по підставі 10), шестнадцатеричном ( по підставі 16), або восьмеричному ( по підставі 8) виставі. Десятковий літерал цілого числа складається з послідовності цифр без уведення 0 (нуля).
+
<p>Ціле число може бути виражене у восьмеричному або шестнадцатеричном скоріше чому в десятиричное. Шестнацетеричные числа включають цифри 0-9 і букви a-f і  A-F, в <b> Javascript</b> вони записуються з комбінацією символів 0x або 0X (нуль-x) перед числом. Восмиричные числа включають тільки цифри 0-7 і в <b> Javascript</b> записуються із провідного нуля.
+
  
<p>Наприклад, десяткове число 23 представляється в шестнадцатеричном виді як 0x17 і у восмеричном як 027
+
Стандартно конвертація здійснюється викликом Number (). Можна і простіше: + str.
<p><font size=+1><b>Літерали із плаваючою крапкою</b></font>
+
// еквівалентні записи
<p>Літерали із плаваючою крапкою являють собою дробові частини цілих чисел і повинні містити в собі принаймні одну цифру й десяткову крапку або символ експоненти ("е" або "Е"). У наступних прикладах наведені різні варіанти вистави того самого числа:
+
var str = "002"
<p>    3.1415927 <br>
+
var a = Number(str) // 2
    31415927е-7 <br>
+
// нечисла перетворюються в NaN
    .31415927Е1 <br>
+
+"0.1// => 0.1
<br>
+
+"0.1z" // => Number.NaN
<font size=+1><b> Логічні літерали</b></font>
+
Крім жорсткої конвертації є і більш м'яка фільтрація в число:
 +
// обрізається все після числа
 +
parseFloat("0.1zf") = 0.1
 +
parseInt("08f.4", 10) = 8
 +
// тут числа взагалі немає, тому NaN
 +
parseFloat("smth") = Number.NaN
 +
parseFloat, parseInt переводять зліва направо, поки це можливо. Якщо взагалі неможливо - то NaN.<br>
 +
<br>Другий аргумент parseInt - основа системи числення. Якщо його немає, то система сама намагається вгадати систему числення:
 +
parseInt("0x10") = 16 // т.я 0x означає 16-річну систему
 +
parseInt("010") = 8 // т.я провідний 0 означає 8-річну систему
 +
// якщо хочете без сюрпризів - вказуйте основу явно
 +
parseInt("010",10) = 10
  
<p>Логічні значення мають тільки два значення, <B>дійсна (true)</B> або <B>неправда (false)</B>. У деяких реалізаціях мови <b> Javascript</b> 0 (false) і 1 (true) не можуть бути використані в якості логічних значень.
+
====Математика====
<p><font size=+1><b> Рядка</b></font>
+
<p>Строкові літерали - нуль або більша кількість знаків, располеженные в подвійні (") або одинарних (') лапках. Рядки повинен бути розділені лапками того ж самого типу; тобто або обидві одинарні лапки або подвійні лапки. Використання зворотної подвійної риси "" дозволяє вставляти  в рядок спеціальні символи. Приведемо приклади строкових літералів:
+
<p>  "Blah"
+
<br>
+
  
  'Blah' <br>
+
Всі математичні функції знаходяться в "пакеті" Math. Не те, щоб у javascript є реальні пакунки просто так вийшло.
  "1234"
+
* Math.floor () / Math.round () / Math.ceil () - округлення
<br>
+
* Math.abs () - модуль числа
  "one line
+
* Math.sin () і т.д
another line"
+
<p><font size=+1><b> Спеціальні символи</b></font>
+
<p>Ви можете використовувати наступні спеціальні символи в строкових литаралах <b> Javascript</b>:
+
<p>    <B>  </B> указує повернення на один символ. <br>
+
  
    <B>f</B> указує переклад сторінки. <br>
+
==Тип String (рядковий)==
    <B>
+
Складається з усіх можливих текстових рядків. Кожен рядок представляє собою упорядкований масив з нуля або більше символів Unicode (тобто 16-бітових цілих чисел без знаку), які називаються частинами рядка. Елементи рядків нумеруються, починаючи з нуля.  
</B> указує нову цифру(знак) лінії. <br>
+
* Лапки подвійні і одинарні працюють однаково
    <B>
+
* Можна вказувати Юнікодні символи через \ uXXXX:
</B> указує повернення каретки. <br>
+
** "зірочка: \ u002a"
    <B> </B> указує cимвол табуляції.  
+
* Вбудовані регулярні вирази, методи replace / match:
 +
** "превед медвед". replace (/ (. *?) \ s (. *) /, "$ 2, $ 1!") / / => медвед, превед!
 +
Як це зазвичай і буває, у регулярки символ \ w позначає латинські буквоцифри або підкреслення, але не російські літери.
  
<p><font size=+1><b>Символи виходу</b></font>
+
Довжина рядка зберігається у властивості length.
<p>
+
Ви можете вставляти лапок усередині рядка, передуючи їм похилою рисою вліво. Це відомо як <i>вихід</i> лапок. Наприклад,
+
<font color="purple"><PRE> document.write("" Вам слід прийняти ванну",
+
-  сказав доктор і наморщив ніс.");</pre>
+
</font>
+
<p>виводить
+
<font color="purple">
+
<PRE>
+
" Вам слід прийняти ванну",
+
- сказав доктор і наморщив ніс</p>
+
<center> </center>
+
  
<hr><br><font class=genmed><b>Додатково на дану тему:</b></font><br><br><img border="0" src="/modules/Pages/images/page_pic.gif" width="10" height="14">
+
==Тип Boolean (логічний)==
<a class="newmed" href="http://www.computer-land.ru/ua/page95.html"><b>Введення в Javascript</b></a><br><img border="0" src="/modules/Pages/images/page_pic.gif" width="10" height="14">
+
У javascript - особливий список значень, які при приведенні до Boolean стають false. Він відрізняється, наприклад, від аналогічного списку в PHP.
<a class="newmed" href="http://www.computer-land.ru/ua/page96.html"><b>Створення кукисов (cookies) в Javascript</b></a><br><img border="0" src="/modules/Pages/images/page_pic.gif" width="10" height="14">
+
 
<a class="newmed" href="http://www.computer-land.ru/ua/page97.html"><b>Одержання значення кукисов в Javascript</b></a><br><img border="0" src="/modules/Pages/images/page_pic.gif" width="10" height="14">
+
Логічний тип складається рівно з двох логічних значень: '''true''' (істина) і '''false''' (неправда).
<a class="newmed" href="http://www.computer-land.ru/ua/page98.html"><b>Ключові слова Javascript</b></a><br></td>
+
 
</tr>
+
:False
</table></td>
+
::false
</tr>
+
::null
</table></td>
+
::undefined
</tr>
+
::“”
</table></td>
+
::0
</tr>
+
::Number.NaN
 +
:True – все інше
 +
::“0”
 +
::“false”
 +
 
 +
Щоб привести значення до булевого - використовується або явна вказівка типу: Boolean (a), або подвійне заперечення:!! а
 +
Boolean(a) == !!a
 +
 
 +
==Тип Object (об'єктний)==
 +
Значення цього типу є об'єкти. Число властивостей необмежено, можна визначати нові властивості або ж використовувати перевизначені. Властивості мають свою назву і значення. Доступ до властивостей об'єкта здійснюється за допомогою символу крапка (.). Наприклад, в наступному записі властивості name об'єкта person присвоюється значення Vasya:
 +
person.name = "Vasya";
 +
Об'єкти створюються за допомогою оператора new:
 +
var person = new Object();
 +
Існує ряд зумовлених об'єктів. Можна створити новий об'єкт, який володіє (наследує) властивості вже існуючого об'єкта таким чином (на прикладі об'єкта Date):
 +
var today = new Date();
 +
 
 +
==Тип Undefined (невизначений)==
 +
Цей тип складається з одного значення undefined. Це значення, яке приймає змінна, яка оголошена в програмі, але якій ще не присвоєно ніякого значення.  
 +
 
 +
==Тип Null (нульовий)==
 +
Складається з одного значення null. Це значення означає нульове, порожнє або неіснуюче посилання.  
 +
 
 +
=='''Перетворення типів'''==
 +
 
 +
Тип змінної залежить від того, який тип інформації в ній зберігається. JavaScript - слаботипізована мова. Це означає, що в декларації змінної не вказується його тип і надалі можна надавати їй значення будь-яких типів. Виконуюча система JavaScript сама виконує автоматичне перетворення типів даних у міру необхідності. Для явного перетворення типів використовуються методи Boolean, Number, Object і String. <br>
 +
<br>Тип змінної привласнюється змінній автоматично протягом виконання скрипта. Так, наприклад, ви можете визначити змінну в такий спосіб:
 +
var answer=42
 +
А пізніше, ви можете привласнити тій же змінній значення, що наприклад випливає:
 +
answer="Thanks for all the fish..."
 +
Або розглянемо наступне вираження:
 +
//приклад
 +
var onestring="1"
 +
var oneint=1
 +
var oneconcatenate=onestring+oneint
 +
// У результаті виходить "11"
 +
var oneaddition=oneint+onestring
 +
// У результаті виходить 2
 +
У першій операції додавання перший операнд є рядком. Javascript припускає, що проводиться операція із двома рядками. Коли  Javascript виявляє в якості другого операнда ціле число, він у відповідності зі своїми виставами перетворить змінну в рядок.
 +
 
 +
Оскільки  Javascript вільно типізований мова, то це не викличе помилки.
 +
 
 +
Тому що  Javascript не підтримує ніяких методів і властивостей для визначення типу поточного значення змінної, дуже важливо уважно відстежувати типи змінних щоб уникнути несподіваних результатів.
 +
 
 +
Взагалі, у вираженнях строкові значення, що включають числові Javascript перетворює числові значення в строкові. Наприклад, розглянемо наступні твердження:
 +
x="The answer is " + 42
 +
y=42 + " is the answer."
 +
Перше твердження буде рядок "The answer is - 42 ". Друге твердження повертає рядок " 42 - The answer is".
  
</table></td>
+
Javascript надає кілька спеціальних функцій для керування строковими й числовими значеннями:
</tr>
+
# eval обчислює рядок, що представляє будь-які  Javascript літерали або змінні, перетворюючи її в число.  
</table>
+
# parseint перетворює рядок у ціле число в зазначеній підставі системи числення, якщо можливо.  
<table border="0" cellpadding="0" cellspacing="0" class="tbl"><tr>
+
# parsefloat перетворює рядок у число із плаваючою крапкою, якщо можливо.
<td class="tbll"><img src="/themes/icgstation/forums/images/spacer.gif" alt="" width="8" height="4" /></td>
+
<td class="tblbot"><img src="/themes/icgstation/forums/images/spacer.gif" alt="" width="8" height="4" /></td>
+
<td class="tblr"><img src="/themes/icgstation/forums/images/spacer.gif" alt="" width="8" height="4" /></td>
+
</tr></table>
+
</td>
+
</tr>
+
</table>
+

Поточна версія на 11:18, 9 жовтня 2016

Змінні

У сценаріях JavaScript можна використовувати змінні, звертаючись до них за назвою. Змінні можуть бути глобальними або локальними. Глобальні змінні досяжні з довільного місця сценарію. Область дії локальних змінних обмежено кодом функції, всередині якого оголошено ці змінні. При створенні сценаріїв JavaScript рекомендовано оголошувати змінні до їхнього використання та надавання початкових величин. Це спрощує відлагодження сценаріїв і зменшує ймовірність помилки.

Оголошення змінної

Оголосити змінну у JavaScript можна при допомозі ключового слова var, таким чином:

var назва змінної

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

  • має починатися начинаться з літери латиниці або символів "_" чи "$", містити лише літери латиниці, цифри і символи "_" та "$";
  • не може збігатися з жодним з таких зарезервованих слів JavaScript:

Spisok slov.JPG

Надання змінним величини здійснюють за допомогою оператора "=". Наприклад, оголошення змінної і надання їй величини текстового рядка можна здійснити так:

var Hello;
Hello = "Привіт!";

При цьому у довільному місці програми змінній Hello можна надати числельну величину, наприклад, так:

Hello = 4;

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

Тип число допускає використання різних форматів, наприклад,:

25 — запис цілого числа у десятковій системі числення;
0137 — запис цілого числа у вісімковій системі числення;
0xFF — запис цілого числа у шістнадцятковій системі числення;
386.7 — запис дійсного числа с плавающей десятковою крапкою;
25e5 або 25E5 — запис дійсного числа в науковій нотації, дорівнює 25 ∙ 105.

Якщо результат виконання операцій з числами не можна подати числом, то повертається величина NaN (від англійською Not a Number).
Тип текстовий рядок описує послідовність символів між лапками (' або ", але одного вигляду). Слід зауважити, порожній рядок відмінний від null.
Тип логічних даних передбачає лише дві величини: true і false.
Якщо змінну було оголошено, але їй не було надано величини, вона має невизначений тип.
Якщо у виразах зустрічаються змінні різних типів, інтерпретатор JavaScript може автоматично перетворити числові дані в рядки тексту. Перетворення рядка у число виконують лише з допомогою спеціальних функцій parseInt (у ціле) і parseFloat (у дійсне).

Типи даних

Мова JavaScript містить шість типів даних: Undefined (непроникний), Null (нульовий), Boolean (логічний), String (рядковий), Number (числовий) і Object (об'єктний). Це відносно незначна кількість типів дозволяє, тим не менше, створювати повноцінні сценарії для виконання багатьох функцій.

Базові типи - це String (рядковий), Number (числовий) і Boolean (логічний).

У Javascript є і об'єктні типи даних і елементарні, які можна інтерпретувати як об'єкти.


Типы данных JS.JPG


Елементарні - створюються простою вказівкою даних:

var orange = "Апельсин"

Об'єктні - наприклад, через оператор new:

var orange = new String("Апельсин")

На практиці, хоча для кожного елементарного типу є відповідний об'єкт, використовувати їх не рекомендується. Це - відмерла частина мови.

var ok = new Boolean(true) // не треба

Елементарні типи автоматично інтерпретуються як об'єкти при викликах методів, тому можна, визначати довжину рядка як:

alert("Апельсин".length)

Тому іноді кажуть, що в javascript - всі об'єкти. Так зручно думати, але певна різниця все ж є.
Наприклад, typeof видасть різний результат:

alert(typeof "test")
Результат 1.JPG
alert(typeof new String("test"))
Результат 2.JPG


Це - ще одна причина уникати використання об'єктів там, де існує елементарний тип: менше плутанини.

Перетворення типу можна явним чином зробити через його назву:

var test = Boolean("something") // true

Крім усім відомих типів даних - в javascript є спеціальне значення undefined, яке, умовно кажучи, позначає що "даних немає". Не null, а даних немає. Розумійте як хочете.

Тип Number (числовий)

Цей тип має формат з плаваючою комою і може задаватись в довільній формі, наприклад, 1.349, 12, .0529,-1.5e10. Запис цілих чисел можлива в вісімковій (починається з O) або шістнадцятковій (починається з Ox) формі. Якщо в ході операцій виникає помилка (наприклад, при діленні на нуль), то змінна отримає значення NaN (not-a-number, що не число).

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

alert(0.1+0.2)  // виведе не 0.3!
Результат 3.JPG


Цікаві методи

Округлення до потрібної точності після коми

Для цього використовується метод toFixed.

0.1234.toFixed(2)  = 0.12

Конвертація у число

Стандартно конвертація здійснюється викликом Number (). Можна і простіше: + str.

// еквівалентні записи
var str = "002"
var a = Number(str) // 2
// нечисла перетворюються в NaN
+"0.1"  // => 0.1
+"0.1z" // => Number.NaN

Крім жорсткої конвертації є і більш м'яка фільтрація в число:

// обрізається все після числа
parseFloat("0.1zf") = 0.1
parseInt("08f.4", 10) = 8
// тут числа взагалі немає, тому NaN
parseFloat("smth") = Number.NaN

parseFloat, parseInt переводять зліва направо, поки це можливо. Якщо взагалі неможливо - то NaN.

Другий аргумент parseInt - основа системи числення. Якщо його немає, то система сама намагається вгадати систему числення:

parseInt("0x10") = 16 // т.я 0x означає 16-річну систему
parseInt("010") = 8 // т.я провідний 0 означає 8-річну систему
// якщо хочете без сюрпризів - вказуйте основу явно
parseInt("010",10) = 10

Математика

Всі математичні функції знаходяться в "пакеті" Math. Не те, щоб у javascript є реальні пакунки просто так вийшло.

  • Math.floor () / Math.round () / Math.ceil () - округлення
  • Math.abs () - модуль числа
  • Math.sin () і т.д

Тип String (рядковий)

Складається з усіх можливих текстових рядків. Кожен рядок представляє собою упорядкований масив з нуля або більше символів Unicode (тобто 16-бітових цілих чисел без знаку), які називаються частинами рядка. Елементи рядків нумеруються, починаючи з нуля.

  • Лапки подвійні і одинарні працюють однаково
  • Можна вказувати Юнікодні символи через \ uXXXX:
    • "зірочка: \ u002a"
  • Вбудовані регулярні вирази, методи replace / match:
    • "превед медвед". replace (/ (. *?) \ s (. *) /, "$ 2, $ 1!") / / => медвед, превед!

Як це зазвичай і буває, у регулярки символ \ w позначає латинські буквоцифри або підкреслення, але не російські літери.

Довжина рядка зберігається у властивості length.

Тип Boolean (логічний)

У javascript - особливий список значень, які при приведенні до Boolean стають false. Він відрізняється, наприклад, від аналогічного списку в PHP.

Логічний тип складається рівно з двох логічних значень: true (істина) і false (неправда).

False
false
null
undefined
“”
0
Number.NaN
True – все інше
“0”
“false”

Щоб привести значення до булевого - використовується або явна вказівка типу: Boolean (a), або подвійне заперечення:!! а

Boolean(a) == !!a

Тип Object (об'єктний)

Значення цього типу є об'єкти. Число властивостей необмежено, можна визначати нові властивості або ж використовувати перевизначені. Властивості мають свою назву і значення. Доступ до властивостей об'єкта здійснюється за допомогою символу крапка (.). Наприклад, в наступному записі властивості name об'єкта person присвоюється значення Vasya:

person.name = "Vasya";

Об'єкти створюються за допомогою оператора new:

var person = new Object();

Існує ряд зумовлених об'єктів. Можна створити новий об'єкт, який володіє (наследує) властивості вже існуючого об'єкта таким чином (на прикладі об'єкта Date):

var today = new Date();

Тип Undefined (невизначений)

Цей тип складається з одного значення undefined. Це значення, яке приймає змінна, яка оголошена в програмі, але якій ще не присвоєно ніякого значення.

Тип Null (нульовий)

Складається з одного значення null. Це значення означає нульове, порожнє або неіснуюче посилання.

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

Тип змінної залежить від того, який тип інформації в ній зберігається. JavaScript - слаботипізована мова. Це означає, що в декларації змінної не вказується його тип і надалі можна надавати їй значення будь-яких типів. Виконуюча система JavaScript сама виконує автоматичне перетворення типів даних у міру необхідності. Для явного перетворення типів використовуються методи Boolean, Number, Object і String.

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

var answer=42

А пізніше, ви можете привласнити тій же змінній значення, що наприклад випливає:

answer="Thanks for all the fish..." 

Або розглянемо наступне вираження:

//приклад 
var onestring="1"
var oneint=1
var oneconcatenate=onestring+oneint
// У результаті виходить "11"
var oneaddition=oneint+onestring
// У результаті виходить 2 

У першій операції додавання перший операнд є рядком. Javascript припускає, що проводиться операція із двома рядками. Коли Javascript виявляє в якості другого операнда ціле число, він у відповідності зі своїми виставами перетворить змінну в рядок.

Оскільки Javascript вільно типізований мова, то це не викличе помилки.

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

Взагалі, у вираженнях строкові значення, що включають числові Javascript перетворює числові значення в строкові. Наприклад, розглянемо наступні твердження:

x="The answer is " + 42
y=42 + " is the answer."

Перше твердження буде рядок "The answer is - 42 ". Друге твердження повертає рядок " 42 - The answer is".

Javascript надає кілька спеціальних функцій для керування строковими й числовими значеннями:

  1. eval обчислює рядок, що представляє будь-які Javascript літерали або змінні, перетворюючи її в число.
  2. parseint перетворює рядок у ціле число в зазначеній підставі системи числення, якщо можливо.
  3. parsefloat перетворює рядок у число із плаваючою крапкою, якщо можливо.