|
|
Рядок 1: |
Рядок 1: |
− | == '''Типи данних''' ==
| + | - - |
− | | + | |
− | | + | |
− | === '''Опис типів даних''' ===
| + | |
− | | + | |
− | | + | |
− | Мова JavaScript містить шість типів даних '''Undefined'''(невизначений), '''Null''' (нульовий), '''Boolean''' (логічний), '''String''' (строковий), '''Number''' (числовий) і '''Object''' (об'єктний). Ця відносно невелика кількість типів дозволяє, тим не менше, створювати повноцінні сценарії для виконання багатьох функцій.
| + | |
− | | + | |
− | ==== '''Тип Undefined (невизначений)''' ====
| + | |
− | | + | |
− | Цей тип складається з єдиного значення '''undefined'''. Це значення, яке приймає змінна, яка оголошена в програмі, але якої ще не присвоєно ніякого значення.
| + | |
− | | + | |
− | ==== '''Тип Null (нульовий)''' ====
| + | |
− | <br>
| + | |
− | Спеціальне значення NULL говорить про те, що змінна не має значення.
| + | |
− | Змінна вважається NULL, якщо: <br>
| + | |
− | їй була присвоєна константа NULL ($var = NULL);
| + | |
− | їй ще не було присвоєно яке-небудь значення;
| + | |
− | вона була вилучена за допомогою unset().
| + | |
− | <br>
| + | |
− | Існує тільки одне значення типу NULL – регістронезалежне ключове слово NULL.
| + | |
− | <br>
| + | |
− | Цей тип складається з єдиного значення '''null'''. Це значення означає нульове, порожне або неіснуюче посилання.
| + | |
− | | + | |
− | ==== '''Тип Boolean (логічний)''' ====
| + | |
− | <br>
| + | |
− | Цей найпростіший тип виражає істинність значення, тобто змінна цього типу може мати тільки два значення – істина TRUE або неправда FALSE.
| + | |
− | | + | |
− | Щоб визначити булевий тип, використовують ключове слово TRUE або FALSE. Обидва регістронезалежні. <br>
| + | |
− | <?php
| + | |
− | $test = True;
| + | |
− | ?>
| + | |
− | <br>
| + | |
− | Логічні змінні використовуються в різних керуючих конструкціях (циклах, умовах і т.п). Мати логічний тип, тобто приймати тільки два значення, істину або неправду, можуть також і деякі оператори (наприклад, оператор рівності). Вони також використовуються в керуючих конструкціях для перевірки яких-небудь умов. Наприклад, в умовній конструкції перевіряється істинність значення оператора або змінної й у залежності від результату перевірки виконуються ті або інші дії. Тут умова може бути істинною або хибною, що саме і відбиває змінна й оператор логічного типу.
| + | |
− | <br>
| + | |
− | Цей тип складається рівно з двох логічних значень: '''true''' (істина) і '''false''' (брехня).
| + | |
− | | + | |
− | ==== '''Тип String (строковий)''' ====
| + | |
− | | + | |
− | Цей тип складається з усіх можливих текстових рядків. Кожен рядок представляє собою упорядкований масив з нуля або більше символів Unicode (тобто 16-бітових цілих чисел без знака), званих ''елементами рядка.'' Елементи рядка нумеруються, починаючи з нуля. Довжина рядка - це кількість елементів в ній; порожній рядок складається з нуля елементів.
| + | |
− | | + | |
− | ==== '''Тип Number (числовий)''' ====
| + | |
− | | + | |
− | Цей тип має рівно 18437736874454810627 (тобто 2<sup>64</sup> - 2<sup>53</sup> + 3)64-бітовому формату плаваючих чисел подвійної точності IEEE 754 з тим єдиним винятком, що 9007199254740990 (тобто 2<sup>53</sup> - 2) різних значень "Не число" даного формату представляються в JavaScript одним значенням '''NaN'''.
| + | |
− | Ще два спеціальні значення - це додатня незкінченність і відємна нескінченність яким в JavaScript відповідають вираження '''+ Infinity''' (або просто '''Inifinity''') і '''-Infinity'''. Відзначимо також, що в даному форматі розрізняються позитивний нуль ('''+0''' або '''0''') і негативний нуль ('''-0''').
| + | |
− | | + | |
− | ==== '''Тип Object (об'єктний)''' ====
| + | |
− | <br>
| + | |
− | Об'єкти – тип даних, що прийшов з об’єктно-орієнтованого програмування (ООП). Відповідно до принципів ООП, клас – це набір об'єктів, що володіють визначеними властивостями і методами роботи з ним, а об'єкт відповідно – представник класу. Наприклад, програмісти – це клас людей, що пишуть програми, вивчають комп'ютерну літературу і, крім того, як усі люди, мають ім'я і прізвище. Тепер, якщо взяти одного конкретного програміста, Васю Іванова, то можна сказати, що він є об'єктом класу програмістів, має ті ж властивості, що й інші програмісти, теж має ім'я, пише програми і т.п.
| + | |
− | <br>
| + | |
− | У PHP для доступу до методів об'єкта використовується оператор ->. Для ініціалізації об'єкта використовується вираз new, що створює для змінної екземпляр об'єкта. <br>
| + | |
− | <?php
| + | |
− | //створюємо клас людей
| + | |
− | class Person
| + | |
− | {
| + | |
− | // метод, що навчає людини PHP
| + | |
− | function know_php()
| + | |
− | {
| + | |
− | echo "Тепер я знаю PHP";
| + | |
− | }
| + | |
− | }
| + | |
− | $bob = new Person; // створюємо об'єкт
| + | |
− | // класу людин
| + | |
− | $bob -> know_php(); // навчаємо його PHP
| + | |
− | ?>
| + | |
− | <br>
| + | |
− | Значенням цього типу є ''об'єкти''. Об'єкт - це невпорядкований набір властивостей
| + | |
− | | + | |
− | ===='''Тип integer (цілі)'''====
| + | |
− | <br>
| + | |
− | Цей тип задає число з множини цілих чисел '''Z = {..., -2, -1, 0, 1, 2, ...}.''' Цілі числа можуть бути зазначені в десяткової, шістнадцятковій або вісімковій системі числення, за бажанням з попереднім знаком '''«-» або «+».'''<br>
| + | |
− | Якщо ви використовуєте вісімкову систему числення, ви повинні випередити число 0 (нулем), для використання шістнадцяткової системи потрібно поставити перед числом 0x. <br>
| + | |
− | <?php
| + | |
− | # десяткове число
| + | |
− | $a = 1234;
| + | |
− | # від’ємне число
| + | |
− | $a = -123;
| + | |
− | # вісімкове число (еквівалентно 83 у десятковій системі)
| + | |
− | $a = 0123;
| + | |
− | # шістнадцяткове число (еквівалентно 26 у десятковій системі)
| + | |
− | $a = 0x1A;
| + | |
− | ?>
| + | |
− | <br>
| + | |
− | Розмір цілого залежить від платформи, хоча, як правило, максимальне значення біля двох мільярдів (це 32-бітне знакове). Беззнакові цілі PHP не підтримує.
| + | |
− | <br>
| + | |
− | Якщо ви визначите число, що перевищує межі цілого типу, воно буде інтерпретоване як число з плаваючою крапкою. Також якщо ви використовуєте оператор, результатом роботи якого буде число, що перевищує межі цілого, замість нього буде повернуте число з плаваючою крапкою.
| + | |
− | <br>
| + | |
− | У PHP не існує оператора ділення націло. Результатом 1/2 буде число з плаваючою крапкою, 0.5. Ви можете звести значення до цілого, що завжди округляє його в меншу сторону, або використати функцію round(), що округляє значення за стандартними правилами. Для перетворення змінної до конкретного типу потрібно перед змінною вказати в дужках потрібний тип. Наприклад, для перетворення змінної $a=0.5 до цілого типу необхідно написати (integer)(0.5) або (integer) $a або використовувати скорочений запис (int)(0.5). Можливість явного визначення типів по такому принципі існує для всіх типів даних (звичайно, не завжди значення одного типу можна перевести в інший тип). Ми не будемо поглиблюватися в усі тонкості визначення типів, оскільки PHP робить це автоматично в залежності від контексту.
| + | |
− | <br>
| + | |
− | ===='''Тип float (числа з крапкою, що плаває)'''====
| + | |
− | | + | |
− | Числа з плаваючою крапкою, (вони ж числа подвійної точності або дійсні числа) можуть бути визначені з допомогою будь-якого з наступних синтаксисів: <br>
| + | |
− | <?php
| + | |
− | $a = 1.234;
| + | |
− | $b = 1.2e3;
| + | |
− | $c = 7E-10;
| + | |
− | ?>
| + | |
− | <br>
| + | |
− | Розмір цілого залежить від платформи, хоча максимум, як правило, ~1.8e308 з точністю близько 14 десяткових цифр.<br>
| + | |
− | | + | |
− | <br>
| + | |
− | ===='''Тип array (масив)'''====
| + | |
− | | + | |
− | Масив у PHP являє собою впорядковану карту – тип, що перетворює значення в ключі. Цей тип оптимізовано у декількох напрямках, тому ви можете використовувати його як масив, список (вектор), хеш-таблицю (що є реалізацією карти), стек, черга і т.д. Оскільки ви можете мати як значення інший масив PHP, можна також легко емулювати дерева.
| + | |
− | <br>
| + | |
− | Задати масив можна за допомогою конструкції array() або безпосередньо задаючи значення його елементам.
| + | |
− | Визначення за допомогою '''array()'''<br>
| + | |
− | array ([key] => value,[key1] => value1, ... )
| + | |
− | <br>
| + | |
− | Мовна конструкція array() приймає як параметри пари ключ => значення, розділені комами. Символ => встановлює відповідність між значенням і його ключем. Ключ може бути як цілим числом, так і рядком, а значення може бути будь-якого ніснуючого в PHP типу. Числовий ключ масиву часто називають індексом. Індексування масиву в PHP починається з нуля. Значення елемента масиву можна одержати, вказавши після імені масиву в квадратних дужках ключ шуканого елемента. Якщо ключ масиву являє собою стандартний запис цілого числа, то він розглядається як число, в противному випадку – як рядок. Тому запис $a["1"] рівносильний запису $a[1], так само як і $a["-1"] рівносильне $a[-1].<br>
| + | |
− | <?php
| + | |
− | $books = array ("php" =>"PHP users guide",12 => true);
| + | |
− | echo $books["php"];
| + | |
− | //виведе "PHP users guide"
| + | |
− | echo $books[12]; //виведе 1
| + | |
− | ?>
| + | |
− | <br>
| + | |
− | Якщо для елемента ключ не заданий, то в якості ключа береться максимальний числовий ключ, збільшений на одиницю. Якщо вказати ключ, якому вже було присвоєно якесь значення, то воно буде перезаписано. Починаючи з PHP 4.3.0, якщо максимальний ключ – від’ємне число, то наступним ключем масиву буде нуль (0). <br>
| + | |
− | <?php
| + | |
− | // масиви $arr і $arr1 еквіваленти
| + | |
− | $arr = array(5 => 43, 32, 56, "b" => 12);
| + | |
− | $arr1 = array(5 => 43, 6 => 32, 7 => 56, "b" => 12);
| + | |
− | ?>
| + | |
− | <br>
| + | |
− | Якщо використовувати як ключ TRUE або FALSE, то його значення переводиться відповідно в одиницю і нуль типу integer. Якщо використовувати NULL, то замість ключа одержимо порожню стрічку. Можна використовувати і сам порожню стрічку як ключ, при цьому її треба брати в лапки. Так що це не те ж саме, що використання порожніх квадратних дужок. Не можна використовувати як ключ масиви й об'єкти.
| + | |
− | Визначення за допомогою синтаксису квадратних дужок
| + | |
− | <br>
| + | |
− | Створити масив можна, просто записуючи в нього значення. Як ми вже говорили, значення елемента масиву можна одержати за допомогою квадратних дужок, всередині яких потрібно вказати його ключ наприклад, $book["php"]. Якщо вказати новий ключ і нове значення наприклад, $book["new_key"]="new_value", то в масив додасться новий елемент. Якщо ми не вкажемо ключ, а тільки привласнимо значення $book[]="new_value", то новий елемент масиву буде мати числовий ключ, на одиницю більший максимального існуючого. Якщо масив, у який ми додаємо значення, ще не існує, то він буде створений. <br>
| + | |
− | <?
| + | |
− | $books["key"]= value; // додали в масив
| + | |
− | // $books значення
| + | |
− | // value із ключем key
| + | |
− | $books[] = value1; /* додали в масив
| + | |
− | значення value1 з
| + | |
− | ключем 13, оскільки
| + | |
− | максимальний ключ у
| + | |
− | ми був 12 */
| + | |
− | ?>
| + | |
− | <br>
| + | |
− | Для того щоб змінити конкретний елемент масиву, потрібно просто присвоїти йому з його ключем нове значення. Змінити ключ елемента не можна, можна тільки знищити елемент (пару ключ/значення) і додати нову. Щоб видалити елемент масиву, потрібно використовувати функцію '''unset()'''.<br>
| + | |
− | <?php
| + | |
− | $books = array ("php" =>"PHP users guide",12 => true);
| + | |
− | $books[] ="Book about Perl"; // додали елемент
| + | |
− | // з ключем (індексом)
| + | |
− | // 13 це еквівалентно
| + | |
− | // $books[13] =
| + | |
− | // "Book about Perl";
| + | |
− | $books["lisp"] =123456; /* Це додає до масиву новий
| + | |
− | елемент із ключем "lisp" і
| + | |
− | значенням 123456 */
| + | |
− | unset($books[12]); // Це видаляє елемент
| + | |
− | // c ключем 12 з масиву
| + | |
− | unset ($books); // видаляє масив цілком
| + | |
− | ?>
| + | |
− | <br>
| + | |
− | Помітимо, що, коли використовуються порожні квадратні дужки, максимальний числовий ключ шукається серед ключів, що існують у масиві з моменту останнього переіндексування. Переіндексувати масив можна за допомогою функції''' array_values()'''. <br>
| + | |
− | <?php
| + | |
− | $arr =array ("a","b","c");
| + | |
− | /* Створюємо масив зі значеннями "a", "b" і "c".
| + | |
− | Оскільки ключі не зазначені, вони будуть
| + | |
− | 0,1,2 відповідно */
| + | |
− | print_r($arr); // виводимо масив (і ключі, і значення)
| + | |
− | unset($arr[0]);
| + | |
− | unset($arr[1]);
| + | |
− | unset($arr[2]);
| + | |
− | // знищуємо з нього всі значення
| + | |
− | print_r($arr); // виводимо масив (і ключі, і значення)
| + | |
− | $arr[] = "aa"; // додаємо новий елемент
| + | |
− | // у масив.
| + | |
− | // Його індексом (ключем)
| + | |
− | // буде 3, а не 0
| + | |
− | print_r($arr);
| + | |
− | $arr =array_values($arr); // переіндексуємо масив
| + | |
− | $arr[] = "bb"; // ключем цього елемента буде 1
| + | |
− | print_r($arr);
| + | |
− | ?>
| + | |
− | | + | |
− | Результатом роботи цього скрипта буде: <br>
| + | |
− | Array ( [0] => a [1] => b [2] => c )
| + | |
− | Array ( )
| + | |
− | Array ( [3] => aa )
| + | |
− | Array ( [0] => aa [1] => bb )
| + | |
− | <br>
| + | |
− | | + | |
− | | + | |
− | === '''Перетворення типів''' ===
| + | |
− | <br>
| + | |
− | Тип змінної залежить від того, який тип інформації в ній зберігається. Javascript не є жорстко типізованим мовою. Це означає, що ви не повинні точно визначати тип даних змінної, у момент її створення. Тип змінної привласнюється змінної автоматично протягом виконання скрипта. Так, наприклад, ви можете визначити змінну в такий спосіб: <br>
| + | |
− | var answer=42
| + | |
− | <br>
| + | |
− | А пізніше, ви можете привласнити тієї ж змінн значення, що наприклад випливає:
| + | |
− | answer="Thanks for all the fish..."
| + | |
− | <br>
| + | |
− | Або розглянемо наступне вираження:
| + | |
− | <br>
| + | |
− | var onestring="1"
| + | |
− | var oneint=1
| + | |
− | var oneconcatenate=onestring+oneint
| + | |
− | // У результаті виходить "11"
| + | |
− | var oneaddition=oneint+onestring
| + | |
− | // У результаті виходить 2
| + | |
− | <br>
| + | |
− | У першій операції додавання перший операнд є рядком. Javascript припускає, що проводиться операція із двома рядками. Коли Javascript виявляє в якості другого операнда ціле число, він у відповідності зі своїми виставами перетворить змінну в рядок.
| + | |
− | <br>
| + | |
− | Оскільки Javascript вільно типізований мова, те це не викличе помилки.
| + | |
− | <br>
| + | |
− | Тому що Javascript не підтримує ніяких методів і властивостей для визначення типу поточного значення змінної, дуже важливо внимательноотслеживать типи змінних щоб уникнути несподіваних результатів.
| + | |
− | <br>
| + | |
− | Взагалі, у вираженнях строкові значення, що включають числові й, Javascript перетворює числові значення в строкові. Наприклад, розглянемо наступні твердження: <br>
| + | |
− | x="The answer is " + 42
| + | |
− | y=42 + " is the answer."
| + | |
− | <br>
| + | |
− | Перше твердження буде рядок "The answer is - 42 ".
| + | |
− | Друге твердження повертає рядок " 42 - The answer is".
| + | |
− | | + | |
− | Javascript надає кілька спеціальних функцій для керування строковими й числовими значеннями:
| + | |
− | eval обчислює рядок, що представляє будь-які Javascript літерали або змінні, перетворюючи її в число. <br>
| + | |
− | parseint перетворює рядок у ціле число в зазначеній підставі системи числення, якщо можливо.
| + | |
− | parsefloat перетворює рядок у число із плаваючою крапкою, якщо можливо.<br>
| + | |
− | <br>
| + | |
− | <br>
| + | |
− | JavaScript - ''слаботипізованнa мовa''. Це означає, що в декларації змінної ми не вказуємо її тип і надалі можемо привласнювати їй значення будь-яких типів. Виконуюча система JavaScript сама виконує автоматичне перетворення типів даних в міру необхідності. Для явного перетворення типів використовуються методи Boolean, Number, Object та String.
| + | |
− | | + | |
− | <strong>Приведение типов</strong>
| + | |
− | <p>Приведение типов в PHP работает так же, как и в C: имя требуемого типа записывается в круглых скобках перед приводимой переменной. Пример:</P>
| + | |
− | <CODE><SPAN style="COLOR: #000000"><SPAN
| + | |
− | style="COLOR: #0000bb"><?php<BR>
| + | |
− | $foo </SPAN><SPAN
| + | |
− | style="COLOR: #007700">= </SPAN><SPAN style="COLOR: #0000bb">10</SPAN><SPAN
| + | |
− | style="COLOR: #007700">; </SPAN><SPAN
| + | |
− | style="COLOR: #ff8000">// $foo это целое число<BR>
| + | |
− | </SPAN><SPAN
| + | |
− | style="COLOR: #0000bb">$bar </SPAN><SPAN
| + | |
− | style="COLOR: #007700">= (boolean) </SPAN><SPAN
| + | |
− | style="COLOR: #0000bb">$foo</SPAN><SPAN style="COLOR: #007700">; </SPAN><SPAN
| + | |
− | style="COLOR: #ff8000">// $bar это булев тип<BR>
| + | |
− | </SPAN><SPAN
| + | |
− | style="COLOR: #0000bb">?></SPAN></SPAN></CODE>
| + | |
− | <p>Допускаются следующие приведения типов:</P>
| + | |
− | <UL>
| + | |
− | <LI>
| + | |
− | <p>(int), (integer) - приведение к целому числу</P>
| + | |
− | | + | |
− | <LI>
| + | |
− | <p>(bool), (boolean) - приведение к булеву типу</P>
| + | |
− | <LI>
| + | |
− | <p>(float), (double), (real) - приведение к числу с плавающей точкой (float)</P>
| + | |
− | <LI>
| + | |
− | <p>(string) - приведение к строке</P>
| + | |
− | <LI>
| + | |
− | | + | |
− | <p>(array) - приведение к массиву</P>
| + | |
− | <LI>
| + | |
− | <p>(object) - приведение к объекту</P>
| + | |
− | </LI>
| + | |
− | </UL>
| + | |
− | | + | |
− | <p>Обратите внимание, что внутри скобок допускаются пробелы и символы табуляции, поэтому следующее равносильно по своему действию:</P>
| + | |
− | | + | |
− | <SPAN style="COLOR: #000000"><SPAN
| + | |
− | style="COLOR: #0000bb"><?php<BR>
| + | |
− | $foo </SPAN><SPAN
| + | |
− | style="COLOR: #007700">= (int) </SPAN><SPAN
| + | |
− | style="COLOR: #0000bb">$bar</SPAN><SPAN style="COLOR: #007700">;<BR>
| + | |
− | </SPAN><SPAN
| + | |
− | style="COLOR: #0000bb">$foo </SPAN><SPAN
| + | |
− | style="COLOR: #007700">= ( int ) </SPAN><SPAN
| + | |
− | style="COLOR: #0000bb">$bar</SPAN><SPAN style="COLOR: #007700">;<BR>
| + | |
− | </SPAN><SPAN
| + | |
− | style="COLOR: #0000bb">?></SPAN></SPAN>
| + | |
− | | + | |
− | <p>Совет: вместо приведения переменной к строке, вы можете заключить ее в двойные кавычки.</p>
| + | |
− | | + | |
− | <SPAN style="COLOR: #000000"><SPAN
| + | |
− | style="COLOR: #0000bb"><?php<BR>
| + | |
− | $foo </SPAN><SPAN
| + | |
− | style="COLOR: #007700">= </SPAN><SPAN style="COLOR: #0000bb">10</SPAN><SPAN
| + | |
− | style="COLOR: #007700">; </SPAN><SPAN
| + | |
− | style="COLOR: #ff8000">// $foo это целое число<BR>
| + | |
− | </SPAN><SPAN
| + | |
− | style="COLOR: #0000bb">$str </SPAN><SPAN style="COLOR: #007700">= </SPAN><SPAN
| + | |
− | style="COLOR: #dd0000">"$foo"</SPAN><SPAN
| + | |
− | style="COLOR: #007700">; </SPAN><SPAN
| + | |
− | style="COLOR: #ff8000">// $str это строка<BR>
| + | |
− | </SPAN><SPAN
| + | |
− | style="COLOR: #0000bb">$fst </SPAN><SPAN
| + | |
− | style="COLOR: #007700">= (string) </SPAN><SPAN
| + | |
− | style="COLOR: #0000bb">$foo</SPAN><SPAN style="COLOR: #007700">; </SPAN><SPAN
| + | |
− | style="COLOR: #ff8000">// $fst это также строка<BR>
| + | |
− | <BR>
| + | |
− | // Это напечатает "они одинаковы"<BR>
| + | |
− | </SPAN><SPAN
| + | |
− | style="COLOR: #007700">if (</SPAN><SPAN style="COLOR: #0000bb">$fst </SPAN><SPAN
| + | |
− | style="COLOR: #007700">=== </SPAN><SPAN style="COLOR: #0000bb">$str</SPAN><SPAN
| + | |
− | style="COLOR: #007700">) {<BR>
| + | |
− | echo </SPAN><SPAN
| + | |
− | style="COLOR: #dd0000">"они одинаковы"</SPAN><SPAN
| + | |
− | style="COLOR: #007700">;<BR>
| + | |
− | }<BR>
| + | |
− | ?>
| + | |
− | | + | |
− | Перетворення типів відбуваються за наступними правилами.
| + | |
− | | + | |
− | ==== '''Перетворення до логічного типу''' ====
| + | |
− | | + | |
− | <div style="margin-left: 3em; margin-top: 1em; margin-bottom: 2em">
| + | |
− | <table border="1" cellpadding="5" cellspacing="0">
| + | |
− | <tr>
| + | |
− | <th>Вихідний тип</th>
| + | |
− | | + | |
− | <th>Результат</th>
| + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | <td>Undefined</td>
| + | |
− | <td><strong>false</strong></td>
| + | |
− | </tr>
| + | |
− | | + | |
− | <tr>
| + | |
− | <td>Null</td>
| + | |
− | <td><strong>false</strong></td>
| + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | <td>Boolean</td>
| + | |
− | <td>без змін</td>
| + | |
− | </tr>
| + | |
− | | + | |
− | <tr>
| + | |
− | <td>Number</td>
| + | |
− | <td><strong>false</strong>, якщо аргумент рівен <strong>+0</strong>, <strong>-0</strong>
| + | |
− | або <strong>NaN</strong>; <strong>true</strong> в інших випадках</td>
| + | |
− | | + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | <td>String</td>
| + | |
− | <td><strong>false</strong>, якщо аргумент — порожній рядок; <strong>true</strong>
| + | |
− | в інших випадках</td>
| + | |
− | | + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | <td>Object</td>
| + | |
− | <td><strong>true</strong></td>
| + | |
− | </tr>
| + | |
− | </table>
| + | |
− | </div>
| + | |
− | | + | |
− | <strong>[[Перетворення до логічного типу в JavaScript]]</strong>
| + | |
− | | + | |
− | | + | |
− | ==== '''Перетворення до числового типу''' ====
| + | |
− | | + | |
− | <div style="margin-left: 3em; margin-top: 1em; margin-bottom: 2em">
| + | |
− | <table border="1" cellpadding="5" cellspacing="0">
| + | |
− | <tr>
| + | |
− | <th>Вихідний тип</th>
| + | |
− | <th>Результат</th>
| + | |
− | </tr>
| + | |
− | | + | |
− | <tr>
| + | |
− | <td>Undefined</td>
| + | |
− | <td><strong>NaN</strong></td>
| + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | <td>Null</td>
| + | |
− | <td><strong>+0</strong></td>
| + | |
− | | + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | <td>Boolean</td>
| + | |
− | <td><strong>1</strong>, якщо аргумент рівен <strong>true</strong>, і <strong>0</strong>,
| + | |
− | якщо аргумент рівен <strong>false</strong></td>
| + | |
− | </tr>
| + | |
− | | + | |
− | <tr>
| + | |
− | <td>Number</td>
| + | |
− | <td>без змін</td>
| + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | <td>String</td>
| + | |
− | <td>якщо рядок містить правильне число (можливо з пробілами перед та / або після нього),
| + | |
− | то це число; <strong>NaN</strong> в іншому випадку</td>
| + | |
− | | + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | <td>Object</td>
| + | |
− | <td>результат перетворення значення об'єкта за замовчуванням</td>
| + | |
− | </tr>
| + | |
− | </table>
| + | |
− | </div>
| + | |
− | | + | |
− | ==== '''Перетворення до рядкового типу''' ====
| + | |
− | | + | |
− | <div style="margin-left: 3em; margin-top: 1em; margin-bottom: 2em">
| + | |
− | <table border="1" cellpadding="5" cellspacing="0">
| + | |
− | <tr>
| + | |
− | <th>Вихідний тип</th>
| + | |
− | <th>Результат</th>
| + | |
− | </tr>
| + | |
− | | + | |
− | <tr>
| + | |
− | <td>Undefined</td>
| + | |
− | <td><tt>"undefined"</tt></td>
| + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | <td>Null</td>
| + | |
− | <td><tt>"null"</tt></td>
| + | |
− | | + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | <td>Boolean</td>
| + | |
− | <td><tt>"true"</tt>, якщо аргумент рівен <strong>true</strong>, і <tt>"false"</tt>,
| + | |
− | якщо аргумент рівен <strong>false</strong></td>
| + | |
− | </tr>
| + | |
− | | + | |
− | <tr>
| + | |
− | <td>Number</td>
| + | |
− | <td>текстове представлення числа (див. нижче)</td>
| + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | <td>String</td>
| + | |
− | <td>без змін</td>
| + | |
− | | + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | <td>Object</td>
| + | |
− | <td>результат перетворення значення об'єкта за замовчуванням</td>
| + | |
− | </tr>
| + | |
− | </table>
| + | |
− | </div>
| + | |
− | | + | |
− | Перетворення числа ''n'' у рядок відбувається за такими правилами:
| + | |
− | | + | |
− | <ul>
| + | |
− | <li>якщо <em>n</em> рівне <strong>NaN</strong>, то результат <strong>"NaN"</strong>;</li>
| + | |
− | | + | |
− | <li>якщо <em>n</em> рівне <strong>+0</strong> або <strong>-0</strong>, то результат <strong>"0"</strong>;</li>
| + | |
− | <li>якщо <em>n</em> відємне, то результат буде конкатенацією рядка <strong>"-"</strong>
| + | |
− | | + | |
− | і результату перетворення в рядок числа <em>-n</em>;</li>
| + | |
− | <li>якщо <em>n</em> рівне некінченності, то результат <strong>"Infinity"</strong>;</li>
| + | |
− | <li>в інших випадках нехай <em>m</em>, <em>k</em> и <em>s</em> — такі цілі числа,
| + | |
− | що <em>k</em> >= 1, 10<sup><em>k</em>-1</sup> <= <em>s</em> < 10<sup><em>k</em></sup>,
| + | |
− | <em>n</em> рівне <em>s</em> x 10<sup><em>m</em>-<em>k</em></sup> и <em>k</em> —
| + | |
− | | + | |
− | найменьше з можливих. Відмітемо, що <em>k</em> — це кількість цифр у десятковому
| + | |
− | представленні <em>s </em>, що <em>s</em> не діляться на 10 і що найменш значуща цифра <em>s</em>
| + | |
− | може не бути однозначно визначеною. Тоді</li>
| + | |
− | <li>якщо <em>k</em> <= <em>m</em> <= 21, то результат складається з <em>k</em> десятичних
| + | |
− | цифр <em>s</em> (без провідних нулів), за якими йдуть <em>m</em>-<em>k</em> символів <strong>'0'</strong>;</li>
| + | |
− | | + | |
− | <li>інакше, якщо 0 < <em>m</em> <= 21, то результат складається з <em>m</em> старших десяткових
| + | |
− | цифр <em>s</em>, за якими слідує десяткова точка <strong>'.'</strong> і <em>k</em>-<em>m</em>
| + | |
− | | + | |
− | залишившихся десяткових цифр <em>s</em>;</li>
| + | |
− | <li>інакше, якщо -6 < <em>m</em> <= 0, то результат складається з символа <strong>'0'</strong>,
| + | |
− | за якими слідує десяткова точка <strong>'.'</strong>, -<em>m</em> символів <strong>'0'</strong>
| + | |
− | | + | |
− | і <em>k</em> десяткових цифр <em>s</em>;</li>
| + | |
− | <li>інакше, якщо <em>k</em> = 1, то результат складається з єдиною цифри <em>s</em>, символа
| + | |
− | <strong>'e'</strong>, символа плюс <strong>'+'</strong> або мінус <strong>'-'</strong> в залежності
| + | |
− | від того, додатнє чи відємне <em>m</em>-1, за якими слідує десяткове представлення
| + | |
− | числа abs(<em>m</em>-1);</li>
| + | |
− | | + | |
− | <li>інакше результат складається з старшої десяткового цифри <em>s</em>, за якою слідує десяткова
| + | |
− | точка <strong>'.'</strong> и <em>k</em>-1 залишившихся десяткових цифр <em>s</em>, символ <strong>'e'</strong>,
| + | |
− | символ плюс <strong>'+'</strong> або мінус <strong>'-'</strong> в залежності
| + | |
− | від того, додатнє чи відємне <em>m</em>-1, за якими слідує десяткове представлення
| + | |
− | числа abs(<em>m</em>-1).</li>
| + | |
− | | + | |
− | </ul>
| + | |
− | | + | |
− | <strong>[[Перетворення до рядкового типу в JavaScript]]</strong>
| + | |
− | | + | |
− | | + | |
− | ==== '''Перетворення до об'єктного типу''' ====
| + | |
− | | + | |
− | <div style="margin-left: 3em; margin-top: 1em; margin-bottom: 2em">
| + | |
− | <table border="1" cellpadding="5" cellspacing="0">
| + | |
− | <tr>
| + | |
− | <th>Вихідний тип тип</th>
| + | |
− | <th>Результат</th>
| + | |
− | | + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | <td>Undefined</td>
| + | |
− | <td>генерується виключення <strong>TypeError</strong></td>
| + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | <td>Null</td>
| + | |
− | | + | |
− | <td>генерується виключення <strong>TypeError</strong></td>
| + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | <td>Boolean</td>
| + | |
− | <td>новий логічний об'єкт з даними значенням за замовчуванням</td>
| + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | | + | |
− | <td>Number</td>
| + | |
− | <td>новий логічний об'єкт з даними значенням за замовчуванням</td>
| + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | <td>String</td>
| + | |
− | <td>новий рядковий об'єкт з даними значенням за замовчуванням</td>
| + | |
− | </tr>
| + | |
− | | + | |
− | <tr>
| + | |
− | <td>Object</td>
| + | |
− | <td>без змін</td>
| + | |
− | </tr>
| + | |
− | </table>
| + | |
− | </div>
| + | |
− |
| + | |
− | | + | |
− | ==== '''Приклади неявних перетворень''' ====
| + | |
− | | + | |
− | У виразах, що з'єднують числові і рядкові значення операцією +, 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>
| + | |
− | | + | |
− | == Змінні ==
| + | |
− | | + | |
− | | + | |
− | Ви використовуєте змінні, щоб зберігати значення у вашому додатку. Ви даєте цим змінним імена, по яких ви посилаєтеся на них, і існують деякі правила, яким імена повинні відповідати. <br>
| + | |
− | | + | |
− | Ідентифікатор Javascript або ім'я повинні початися із символу або символом підкреслення ("_"); послідовність символів також можуть бути цифри '''(0-9)'''. Символи включають знаки з '''"A"''' до '''"Z"''' (верхнього регістру) і знаки з '''"a"''' до '''"z"''' (нижній регістр). Javascript ураховує регістр.<br>
| + | |
− | <br>
| + | |
− | '''Деякі приклади припустимих імен:'''
| + | |
− | | + | |
− | Number_hits
| + | |
− | temp99
| + | |
− | _name
| + | |
− | <br>
| + | |
− | '''Область дії змінних'''
| + | |
− | <br>
| + | |
− | Область дії змінних - те, де ви можете використовувати їх у скрипте. В Javascript, існує дві області дії, які змінні можуть мати:
| + | |
− | <br>
| + | |
− | '''Глобальна:''' Ви можете використовувати змінну де-небудь у додатку.
| + | |
− | '''Локальна:''' Ви можете використовувати змінну усередині поточної функції.
| + | |
− | <br>
| + | |
− | Щоб оголосити локальну змінну усередині функція, використовуйте ключове слово var,
| + | |
− | <br>наприклад:
| + | |
− | var total=0;
| + | |
− | | + | |
− | Щоб оголосити глобальну змінну, оголосите змінну призначення, яка просто привласнює значення змінної (або у функції або поза функцією),
| + | |
− | <br>наприклад:
| + | |
− | total=0;
| + | |
− | | + | |
− | Найкраще повідомляти глобальні змінні на початку вашого скрипта, так, щоб функції успадковували змінну і її значення.
| + | |
− | | + | |
− | '''Літерали'''
| + | |
− | | + | |
− | Літерали - спосіб, яким ви представляєте значення в Javascript. Установлені значення, які ви буквально (literally) представляєте у вашому джерелі, і - не змінні.
| + | |
− | <br>Приклади літералів включають:
| + | |
− | | + | |
− | 42
| + | |
− | 3.14159
| + | |
− | "Бути або не бути"
| + | |
− | | + | |
− | '''Цілі числа (Integers)'''
| + | |
− | <br>
| + | |
− | Цілими називають числа виду 1, 164, 102390. Вони можуть бути виражені в десятковому ( по підставі 10), шестнадцатеричном ( по підставі 16), або восьмеричному ( по підставі 8) виставі. Десятковий літерал цілого числа складається з послідовності цифр без уведення 0 (нуля).
| + | |
− | <br>
| + | |
− | Ціле число може бути виражене у восьмеричному або шестнадцатеричном скоріше чому в десятиричное. Шестнацетеричные числа включають цифри 0-9 і букви a-f і A-F, в Javascript вони записуються з комбінацією символів 0x або 0X (нуль-x) перед числом. Восмиричные числа включають тільки цифри 0-7 і в Javascript записуються із провідного нуля.
| + | |
− | <br>
| + | |
− | Наприклад:<br>
| + | |
− | десяткове число 23 представляється в шестнадцатеричном виді як 0x17 і у восмеричном як
| + | |
− | 027
| + | |
− | | + | |
− | '''Літерали із плаваючою крапкою'''
| + | |
− | | + | |
− | Літерали із плаваючою крапкою являють собою дробові частини цілих чисел і повинні містити в собі принаймні одну цифру й десяткову крапку або символ експоненти '''("е" або "Е")'''. У наступних прикладах наведені різні варіанти вистави того самого числа:
| + | |
− | | + | |
− | 3.1415927
| + | |
− | 31415927е-7
| + | |
− | .31415927Е1
| + | |
− | | + | |
− | '''Логічні літерали'''
| + | |
− | <br>
| + | |
− | Логічні значення мають тільки два значення, дійсна (true) або неправда (false). У деяких реалізаціях мови Javascript 0 (false) і 1 (true) не можуть бути використані в якості логічних значень.
| + | |
− | <br>
| + | |
− | '''Рядка'''
| + | |
− | <br>
| + | |
− | Строкові літерали - нуль або більша кількість знаків, располеженные в подвійні (") або одинарних (') лапках. Рядки повинен бути розділені лапками того ж самого типу; тобто або обидві одинарні лапки або подвійні лапки. Використання зворотної подвійної риси "" дозволяє вставляти в рядок спеціальні символи. Приведемо приклади строкових літералів:
| + | |
− | | + | |
− | "Blah"
| + | |
− | 'Blah'
| + | |
− | "1234"
| + | |
− | "one line another line"
| + | |
− | | + | |
− | '''Спеціальні символи'''
| + | |
− | | + | |
− | Ви можете використовувати наступні спеціальні символи в строкових литаралах Javascript:
| + | |
− | | + | |
− | вказує повернення на один символ.
| + | |
− | f вказує переклад сторінки.
| + | |
− | вказує нову цифру(знак) лінії.
| + | |
− | вказує повернення каретки.
| + | |
− | вказує cимвол табуляції.
| + | |
− | <br>
| + | |
− | '''Символи виходу'''
| + | |
− | <br>
| + | |
− | Ви можете вставляти лапок усередині рядка, передуючи їм похилою рисою вліво. Це відомо як вихід лапок.
| + | |
− | <br>Наприклад
| + | |
− | document.write("" Вам слід прийняти ванну",- сказав доктор і наморщив ніс.");
| + | |
− | | + | |
− | ''' виводить
| + | |
− | " Вам слід прийняти ванну",
| + | |
− | - сказав доктор і наморщив ніс'''
| + | |
− | | + | |
− | | + | |
− | | + | |
− | === Декларація змінних ===
| + | |
− | | + | |
− | <p><em>Змінні</em> використовуються в якості символічних імен, які приймають
| + | |
− | різні значення. Імена змінних задаються ідентифікаторами. Змінна
| + | |
− | створюється в момент її декларації. JavaScript дозволяє декларувати змінну двома способами:</p>
| + | |
− | <ul>
| + | |
− | <li>За допомогою ключового слова <strong>var</strong>, наприклад, <code>var x;</code> або <code>var
| + | |
− | x = 21;</code>.</li>
| + | |
− | | + | |
− | <li>Просто присвоюванням змінній значення, наприклад <code>x = 21;</code>.</li>
| + | |
− | </ul>
| + | |
− | | + | |
− | <p>Якщо декларація змінної не містить присвоювання їй значення, то її значенням вважається
| + | |
− | <strong>undefined</strong>. Ми можемо перевіряти, визначено Чи має значення змінної, і вживати
| + | |
− | відповідні дії. Приклад:</p>
| + | |
− | <font color="#008000"><div class="code">
| + | |
− | <pre class="code">var text;
| + | |
− | if (text == undefined)
| + | |
− | document.write("Текст не задан");
| + | |
− | else
| + | |
− | document.write("Текст:" + text);</pre>
| + | |
− | | + | |
− | </div></font>
| + | |
− | | + | |
− | <p>В этом примере значение переменной <dfn>text</dfn> не определено, поэтому будет выполнен первый
| + | |
− | оператор <dfn>document.write</dfn>.</p>
| + | |
− | | + | |
− | <p>В самом общем виде декларация переменных имеет вид:</p>
| + | |
− | | + | |
− | <font color="#008000">var идентификатор[=инициализатор]?[,идентификатор[=инициализатор]?]?</font>
| + | |
− | | + | |
− | <p>Здесь <em>инициализатор</em> — это любое выражение, значение которого присваивается
| + | |
− | переменной при ее создании. Пример:</p>
| + | |
− | | + | |
− | <font color="#blue"><div class="code">
| + | |
− | <pre class="code">var a = 0, b, c = "текст", x, y = false;</pre>
| + | |
− | </div></font>
| + | |
− | | + | |
− | === Область действия переменных ===
| + | |
− | | + | |
− | <p>Область действия переменной определяется положением ее декларации в тексте программы. Существуют
| + | |
− | три типа исполняемого кода JavaScript, называемых <em>контекстом исполнения</em>:</p>
| + | |
− | <ul>
| + | |
− | <li><em>Глобальный контекст</em>, т. е. исходный текст сценариев, не включая тела функций.</li>
| + | |
− | | + | |
− | <li><em>Локальный контекст</em>, т. е. исходный текст сценариев, являющийся телом функции,
| + | |
− | а также аргумент конструктора встроенного объекта <strong>Function</strong>.
| + | |
− | Точнее говоря, если последним параметром конструктора <strong>Function</strong>
| + | |
− | является строка текста, то она интерпретируется как тело функции.</li>
| + | |
− | <li><em>Eval-контекст</em>, т. е. аргумент метода <strong>eval</strong>.
| + | |
− | Если параметром метода <strong>eval</strong> является строка
| + | |
− | текста, то она интерпретируется как программа на языке JavaScript, имеющая тот же контекст,
| + | |
− | в котором был вызван этот метод.</li>
| + | |
− | | + | |
− | </ul>
| + | |
− | | + | |
− | <p>Иными словами, любая переменная, декларированная вне тела всех функций, является <em>глобальной</em>
| + | |
− | и доступна всюду в тексте данной программы. Переменная, декларированная в теле функции, является
| + | |
− | <em>локальной</em> и доступна только внутри тела этой функции. Об особенностях eval-контекста
| + | |
− | см. описание метода <strong>eval</strong>.</p>
| + | |
− | | + | |
− | <p>Для декларации глобальных переменных ключевое слово <strong>var</strong> не обязательно. Однако,
| + | |
− | оно обязательно при декларации локальных переменных.</p>
| + | |
− | | + | |
− | | + | |
− | [[Інтернет-програмування]]
| + | |