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

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
Рядок 1: Рядок 1:
<td><h1>Змінні, величини, імена й літерали</h1>
+
1. '''Типи данних'''
<p><strong>Значення</strong></p>
+
<p><b>Javascript</b> розпізнає наступні типи величин:</p>
+
<ol>
+
<li> Числа, типу 42 або 3.14159 </li>
+
  
<li> Логічні (Булеві), значення true або false </li>
+
1.1. '''Опис типів даних'''
<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>
+
Мова JavaScript містить шість типів даних '''Undefined'''(невизначений), '''Null''' (нульовий), '''Boolean''' (логічний), '''String'''  (строковий), '''Number''' (числовий) і '''Object''' (об'єктний). Ця відносно невелика кількість типів дозволяє, тим не менше, створювати повноцінні сценарії для виконання багатьох функцій.
<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> виявляє в якості другого операнда ціле число, він у відповідності зі своїми виставами перетворить змінну в рядок.
+
1.1.1. '''Тип Undefined (невизначений)'''
<p>Оскільки <b> Javascript</b> вільно типізований мова, те це не викличе  помилки.
+
<p> Тому що <b> Javascript</b> не підтримує ніяких методів і властивостей для визначення типу поточного значення змінної, дуже важливо внимательноотслеживать типи змінних щоб уникнути несподіваних результатів.
+
  
<p> Взагалі, у вираженнях строкові значення, що включають числові й, <b> Javascript</b> перетворює числові значення в строкові. Наприклад, розглянемо наступні твердження:
+
Цей тип складається з єдиного значення '''undefined'''. Це значення, яке приймає змінна, яка оголошена в програмі, але якої ще не присвоєно ніякого значення.
<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>
+
1.1.2. '''Тип Null (нульовий)'''
<li><em>parseint</em> перетворює рядок у ціле число в зазначеній підставі системи числення, якщо можливо. </li>
+
<li><em>parsefloat</em> перетворює рядок у число із плаваючою крапкою, якщо можливо.
+
</li>
+
</ol>
+
  
<p><font size=+1><b>Змінні</b></font>
+
Цей тип складається з єдиного значення '''null'''. Це значення означає нульове, порожне або неіснуюче посилання.
<p>Ви використовуєте змінні, щоб зберігати значення у вашому додатку. Ви даєте цим змінним <I>імена</I>, по яких ви посилаєтеся на них, і існують деякі правила, яким імена повинні відповідати.
+
<p>Ідентифікатор <b> Javascript</b> або <I>ім'я</I> повинні початися із символу або символом підкреслення ("_"); послідовність символів також можуть бути цифри (0-9). Символи включають знаки з "A" до "Z" (верхнього регістру) і знаки з "a" до "z" (нижній регістр). <b> Javascript</b> ураховує регістр.  
+
  
<p> Деякі приклади припустимих імен:
+
1.1.3. '''Тип Boolean (логічний)'''
<p>    Number_hits <br>
+
    temp99 <br>
+
    _name
+
<p><font size=+1><b>Область дії змінних</b></font>
+
<p> <i>Область дії</i> змінних - те, де ви можете використовувати їх у скрипте. В <b>Javascript</b>, існує дві області дії, які змінні можуть мати:
+
  
<p>    <b>Глобальна:</b> Ви можете використовувати змінну де-небудь у додатку. <br>
+
Цей тип складається рівно з двох логічних значень: '''true''' (істина) і '''false''' (брехня).
    <b>Локальна:</b> Ви можете використовувати змінну усередині поточної функції.
+
<p> Щоб оголосити локальну змінну усередині функція, використовуйте ключове слово <b>var</b>, наприклад:
+
<font color="purple" ><PRE> var total=0; </PRE> </font>
+
  
<p>Щоб оголосити глобальну змінну, оголосите змінну призначення, яка просто привласнює значення змінної (або у функції або поза функцією), наприклад:
+
1.1.4. '''Тип String (строковий)'''
<font color="purple" ><PRE> total=0; </PRE> </font>
+
<p> Найкраще повідомляти глобальні змінні на початку вашого скрипта, так, щоб функції успадковували змінну і її значення.
+
<p><font size=+1><b>Літерали</b></font>
+
<p>Літерали - спосіб, яким ви представляєте значення в <b> Javascript</b>. Установлені значення, які ви <I>буквально (literally)</I> представляєте у вашому джерелі, і - не змінні. Приклади літералів включають:
+
<p>  42 <br>
+
  
  3.14159 <br>
+
Цей тип складається з усіх можливих текстових рядків. Кожен рядок представляє собою упорядкований масив з нуля або більше символів Unicode (тобто 16-бітових цілих чисел без знака), званих ''елементами рядка.'' Елементи рядка нумеруються, починаючи з нуля.  Довжина рядка - це кількість елементів в ній; порожній рядок складається з нуля елементів.
  "Бути або не бути"
+
<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
+
1.1.5. '''Тип Number (числовий)'''
<p><font size=+1><b>Літерали із плаваючою крапкою</b></font>
+
<p>Літерали із плаваючою крапкою являють собою дробові частини цілих чисел і повинні містити в собі принаймні одну цифру й десяткову крапку або символ експоненти ("е" або "Е"). У наступних прикладах наведені різні варіанти вистави того самого числа:
+
<p>    3.1415927 <br>
+
    31415927е-7 <br>
+
    .31415927Е1 <br>
+
<br>
+
<font size=+1><b> Логічні літерали</b></font>
+
  
<p>Логічні значення мають тільки два значення, <B>істиність (true)</B> або <B>хибність(false)</B>. У деяких реалізаціях мови <b> Javascript</b> 0 (false) і 1 (true) не можуть бути використані в якості логічних значень.
+
Цей тип має рівно 18437736874454810627 (тобто 2<sup>64</sup> - 2<sup>53</sup> + 3)64-бітовому формату плаваючих чисел подвійної точності IEEE 754 з тим єдиним винятком, що 9007199254740990 (тобто 2<sup>53</sup> - 2) різних значень "Не число" даного формату представляються в JavaScript одним значенням '''NaN'''.  
<p><font size=+1><b> Рядка</b></font>
+
Ще два спеціальні значення - це додатня незкінченність і відємна нескінченність яким в JavaScript відповідають вираження '''+ Infinity''' (або просто '''Inifinity''') і '''-Infinity'''. Відзначимо також, що в даному форматі розрізняються позитивний нуль ('''+0''' або '''0''') і негативний нуль ('''-0''').
<p>Строкові літерали - нуль або більша кількість знаків, беруться в подвійні (") або одинарні (') лапки. Рядки повинні бути розділені лапками того ж самого типу; тобто або обидві одинарні лапки або подвійні лапки. Використання зворотної подвійної риси "" дозволяє вставляти  в рядок спеціальні символи. Приведемо приклади строкових літералів:
+
<p>  "Blah"
+
<br>
+
  
  'Blah' <br>
+
1.1.6. '''Тип Object (об'єктний)'''
  "1234"
+
<br>
+
  "one line
+
another line"
+
<p><font size=+1><b> Спеціальні символи</b></font>
+
<p>Ви можете використовувати наступні спеціальні символи в строкових литаралах <b> Javascript</b>:
+
<p>    <B>  </B> указує повернення на один символ. <br>
+
  
    <B>f</B> указує переклад сторінки. <br>
+
Значенням цього типу є ''об'єкти''. Об'єкт - це невпорядкований набір властивостей
    <B>
+
</B> указує нову цифру(знак) лінії. <br>
+
    <B>
+
</B> указує повернення каретки. <br>
+
    <B> </B> указує cимвол табуляції.  
+
  
<p><font size=+1><b>Символи виходу</b></font>
+
1.2. '''Перетворення типів'''
<p>
+
 
Ви можете вставляти лапок усередині рядка, передуючи їм похилою рисою вліво. Це відомо як <i>вихід</i> лапок. Наприклад,
+
JavaScript - ''слаботіпізірованнa мовa''. Це означає, що в декларації змінної ми не вказуємо її тип і надалі можемо привласнювати їй значення будь-яких типів. Виконуюча система JavaScript сама виконує автоматичне перетворення типів даних в міру необхідності. Для явного перетворення типів використовуються методи Boolean, Number, Object та String.
<font color="purple"><PRE> document.write("" Вам слід прийняти ванну",
+
 
- сказав доктор і наморщив ніс.");</pre>
+
Перетворення типів відбуваються за наступними правилами.
</font>
+
 
<p>виводить
+
1.2.1 '''Перетворення до логічного типу'''
<font color="purple">
+
 
<PRE>
+
<div style="margin-left: 3em; margin-top: 1em; margin-bottom: 2em">
" Вам слід прийняти ванну",  
+
        <table border="1" cellpadding="5" cellspacing="0">
- сказав доктор і наморщив ніс</p>
+
          <tr>
<center> </center>
+
            <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>
 +
 
 +
1.2.2. '''Перетворення до числового типу'''
 +
 
 +
<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>
 +
 
 +
1.2.3. '''Перетворення до рядкового типу'''
 +
 
 +
<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>
 +
 
 +
1.2.4. '''Приклади неявних перетворень'''
 +
 
 +
У виразах, що з'єднують числові і рядкові значення операцією +, JavaScript перетворює числа в рядки, наприклад:

Версія за 16:08, 21 квітня 2010

1. Типи данних

1.1. Опис типів даних

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

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

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

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

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

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

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

1.1.4. Тип String (строковий)

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

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

Цей тип має рівно 18437736874454810627 (тобто 264 - 253 + 3)64-бітовому формату плаваючих чисел подвійної точності IEEE 754 з тим єдиним винятком, що 9007199254740990 (тобто 253 - 2) різних значень "Не число" даного формату представляються в JavaScript одним значенням NaN. Ще два спеціальні значення - це додатня незкінченність і відємна нескінченність яким в JavaScript відповідають вираження + Infinity (або просто Inifinity) і -Infinity. Відзначимо також, що в даному форматі розрізняються позитивний нуль (+0 або 0) і негативний нуль (-0).

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

Значенням цього типу є об'єкти. Об'єкт - це невпорядкований набір властивостей

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

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

Перетворення типів відбуваються за наступними правилами.

1.2.1 Перетворення до логічного типу

Вихідний тип Результат
Undefined false
Null false
Boolean без змін
Number false, якщо аргумент рівен +0, -0 або NaN; true в інших випадках
String false, якщо аргумент — порожній рядок; true в інших випадках
Object true

1.2.2. Перетворення до числового типу

Вихідний тип Результат
Undefined NaN
Null +0
Boolean 1, якщо аргумент рівен true, і 0, якщо аргумент рівен false
Number без змін
String якщо рядок містить правильне число (можливо з пробілами перед та / або після нього), то це число; NaN в іншому випадку
Object результат перетворення значення об'єкта за замовчуванням

1.2.3. Перетворення до рядкового типу

Вихідний тип Результат
Undefined "undefined"
Null "null"
Boolean "true", якщо аргумент рівен true, і "false", якщо аргумент рівен false
Number текстове представлення числа (див. нижче)
String без змін
Object результат перетворення значення об'єкта за замовчуванням

Перетворення числа n у рядок відбувається за такими правилами:

  • якщо n рівне NaN, то результат "NaN";
  • якщо n рівне +0 або -0, то результат "0";
  • якщо n відємне, то результат буде конкатенацією рядка "-" і результату перетворення в рядок числа -n;
  • якщо n рівне некінченності, то результат "Infinity";
  • в інших випадках нехай m, k и s — такі цілі числа, що k >= 1, 10k-1 <= s < 10k, n рівне s x 10m-k и k — найменьше з можливих. Відмітемо, що k — це кількість цифр у десятковому представленні s , що s не діляться на 10 і що найменш значуща цифра s може не бути однозначно визначеною. Тоді
  • якщо k <= m <= 21, то результат складається з k десятичних цифр s (без провідних нулів), за якими йдуть m-k символів '0';
  • інакше, якщо 0 < m <= 21, то результат складається з m старших десяткових цифр s, за якими слідує десяткова точка '.' і k-m залишившихся десяткових цифр s;
  • інакше, якщо -6 < m <= 0, то результат складається з символа '0', за якими слідує десяткова точка '.', -m символів '0' і k десяткових цифр s;
  • інакше, якщо k = 1, то результат складається з єдиною цифри s, символа 'e', символа плюс '+' або мінус '-' в залежності від того, додатнє чи відємне m-1, за якими слідує десяткове представлення числа abs(m-1);
  • інакше результат складається з старшої десяткового цифри s, за якою слідує десяткова точка '.' и k-1 залишившихся десяткових цифр s, символ 'e', символ плюс '+' або мінус '-' в залежності від того, додатнє чи відємне m-1, за якими слідує десяткове представлення числа abs(m-1).

1.2.4. Приклади неявних перетворень

У виразах, що з'єднують числові і рядкові значення операцією +, JavaScript перетворює числа в рядки, наприклад: