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

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
(Замінено вміст на « - -»)
Рядок 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">&lt;?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">?&gt;</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">&lt;?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">?&gt;</SPAN></SPAN>
+
 
+
<p>Совет: вместо приведения переменной к строке, вы можете заключить ее в двойные кавычки.</p>
+
 
+
<SPAN style="COLOR: #000000"><SPAN
+
style="COLOR: #0000bb">&lt;?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>, якщо аргумент&nbsp;&#151; порожній рядок; <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>&quot;undefined&quot;</tt></td>
+
          </tr>
+
          <tr>
+
            <td>Null</td>
+
            <td><tt>&quot;null&quot;</tt></td>
+
 
+
          </tr>
+
          <tr>
+
            <td>Boolean</td>
+
            <td><tt>&quot;true&quot;</tt>, якщо аргумент рівен <strong>true</strong>, і <tt>&quot;false&quot;</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>&quot;NaN&quot;</strong>;</li>
+
 
+
        <li>якщо <em>n</em> рівне <strong>+0</strong> або <strong>-0</strong>, то результат <strong>&quot;0&quot;</strong>;</li>
+
        <li>якщо <em>n</em> відємне, то результат буде конкатенацією рядка <strong>&quot;-&quot;</strong>
+
 
+
          і результату перетворення в рядок числа <em>-n</em>;</li>
+
        <li>якщо <em>n</em> рівне некінченності, то результат <strong>&quot;Infinity&quot;</strong>;</li>
+
        <li>в інших випадках нехай <em>m</em>, <em>k</em> и <em>s</em>&nbsp;&#151; такі цілі числа,
+
          що <em>k</em>&nbsp;&gt;=&nbsp;1, 10<sup><em>k</em>-1</sup>&nbsp;&lt;=&nbsp;<em>s</em>&nbsp;&lt;&nbsp;10<sup><em>k</em></sup>,
+
          <em>n</em> рівне <em>s</em>&nbsp;x&nbsp;10<sup><em>m</em>-<em>k</em></sup> и <em>k</em>&nbsp;&#151;
+
 
+
          найменьше з можливих. Відмітемо, що <em>k</em>&nbsp;&#151; це кількість цифр у десятковому
+
          представленні <em>s </em>, що <em>s</em> не діляться на 10 і що найменш значуща цифра <em>s</em>
+
          може не бути однозначно визначеною. Тоді</li>
+
        <li>якщо <em>k</em> &lt;= <em>m</em> &lt;= 21, то результат складається з <em>k</em> десятичних
+
          цифр <em>s</em> (без провідних нулів), за якими йдуть <em>m</em>-<em>k</em> символів <strong>'0'</strong>;</li>
+
 
+
        <li>інакше, якщо 0 &lt; <em>m</em> &lt;= 21, то результат складається з <em>m</em> старших десяткових
+
          цифр <em>s</em>, за якими слідує десяткова точка <strong>'.'</strong> і <em>k</em>-<em>m</em>
+
 
+
          залишившихся десяткових цифр <em>s</em>;</li>
+
        <li>інакше, якщо -6 &lt; <em>m</em> &lt;= 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 = &quot;Відповідь дорівнює &quot; + 21  // повертає &quot;Відповідь дорівнює 21&quot;
+
y = 21 + &quot;  - ось відповідь&quot; // повертає &quot;21 - ось відповідь&quot;</pre>
+
 
+
      </div>
+
 
+
      <p>В інших випадках JavaScript намагається перетворити рядок в число, наприклад:</p>
+
 
+
      <div class="code">
+
<pre class="code">a = &quot;21&quot; - 1 // повертає 20
+
b = &quot;21&quot; + 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(&quot;Текст не задан&quot;);
+
else
+
  document.write(&quot;Текст:&quot; + text);</pre>
+
 
+
      </div></font>
+
 
+
      <p>В этом примере значение переменной <dfn>text</dfn> не определено, поэтому будет выполнен первый
+
        оператор <dfn>document.write</dfn>.</p>
+
 
+
      <p>В самом общем виде декларация переменных имеет вид:</p>
+
 
+
<font color="#008000">var идентификатор[=инициализатор]?[,идентификатор[=инициализатор]?]?</font>
+
 
+
      <p>Здесь <em>инициализатор</em>&nbsp;&#151; это любое выражение, значение которого присваивается
+
        переменной при ее создании. Пример:</p>
+
 
+
      <font color="#blue"><div class="code">
+
<pre class="code">var a = 0, b, c = &quot;текст&quot;, x, y = false;</pre>
+
      </div></font>
+
 
+
=== Область действия переменных ===
+
 
+
      <p>Область действия переменной определяется положением ее декларации в тексте программы. Существуют
+
        три типа исполняемого кода JavaScript, называемых <em>контекстом исполнения</em>:</p>
+
<ul>
+
        <li><em>Глобальный контекст</em>, т.&nbsp;е. исходный текст сценариев, не включая тела функций.</li>
+
 
+
        <li><em>Локальный контекст</em>, т.&nbsp;е. исходный текст сценариев, являющийся телом функции,
+
          а также аргумент конструктора встроенного объекта <strong>Function</strong>.
+
          Точнее говоря, если последним параметром конструктора <strong>Function</strong>
+
          является строка текста, то она интерпретируется как тело функции.</li>
+
        <li><em>Eval-контекст</em>, т.&nbsp;е. аргумент метода <strong>eval</strong>.
+
          Если параметром метода <strong>eval</strong> является строка
+
          текста, то она интерпретируется как программа на языке JavaScript, имеющая тот же контекст,
+
          в котором был вызван этот метод.</li>
+
 
+
      </ul>
+
 
+
<p>Иными словами, любая переменная, декларированная вне тела всех функций, является <em>глобальной</em>
+
        и доступна всюду в тексте данной программы. Переменная, декларированная в теле функции, является
+
        <em>локальной</em> и доступна только внутри тела этой функции. Об особенностях eval-контекста
+
        см. описание метода <strong>eval</strong>.</p>
+
 
+
      <p>Для декларации глобальных переменных ключевое слово <strong>var</strong> не обязательно. Однако,
+
        оно обязательно при декларации локальных переменных.</p>
+
 
+
 
+
[[Інтернет-програмування]]
+

Версія за 08:25, 7 квітня 2012

- -