⊗jsPmBsATC 43 of 505 menu

Автоматично преобразуване на типове данни

Както вече знаете, низовете в JavaScript трябва да се поставят в кавички. Може да се случи всичките символи на низа да са цифри:

let a = '123';

В този случай променливата a също е низ, но с определен нюанс.

Същността на нюанса е следната: ако върху низ с цифри се извърши някаква математическа операция - тази операция ще бъде изпълнена така, сякаш наистина имаме числа, а не низове:

alert('2' * '3'); // ще изведе 6

В този случай JavaScript вижда, че се опитваме да изпълним недопустима за низове, но допустима за числа операция.

Той също така вижда, че всъщност нашите низове - това са числа в кавички. Затова JavaScript автоматично извършва преобразуване на тези низове към числа и изпълнява съответната математическа операция върху тях.

Това работи, ако в нашите низове има само цифри. Ако там има дори една буква - JavaScript ще счита операцията за некоректна и ще направи резултата ѝ стойност NaN:

alert('2' * '3s'); // ще изведе NaN

Освен това, автоматичното преобразуване се случва, ако операцията е математически коректна, но недопустима за низове.

Например, низове не могат (а числа могат) да се умножават, делят, изваждат, затова във всички такива операции ще има автоматично преобразуване на низове с цифри към числа.

Обаче, низовете, както и числата, се събират с помощта на оператора +. Това означава, че в случай на събиране няма да има автоматично преобразуване:

let a = '1' + '2'; alert(a); // ще изведе '12' - получи се събиране на низове

Ако едно от събираемите е число, а другото - низ, то винаги печели низът:

let a = 1 + '2'; alert(a); // ще изведе '12'

В такива случаи JavaScript, обратно, автоматично преобразува числата в низове и извършва събиране на низове.

Има, обаче, нюанси, когато събираемите са повече от две: в този случай преобразуването към определен тип зависи от реда на изпълнение на операциите.

В следващия пример първо 2 и 3 ще се съберат като числа, а след това резултатът ще се прибави към низа '1' вече като низ '5', което в крайна сметка ще даде низа '15':

let a = '1' + (2 + 3); alert(a); // ще изведе '15'

Ако се махнат скобите, всичко ще се събира отляво надясно. Тоест първо към низа '1' ще се прибави числото 2 и в резултат ще се получи низът '12'. След това към този низ ще се прибави числото 3 и в резултат ще се получи низът '123':

let a = '1' + 2 + 3; alert(a); // ще изведе '123'

А ето в следващия пример числата 2 и 3 са написани в началото, затова първо те ще се съберат като числа, давайки в резултат числото 5, а след това към това число ще се прибави низът '1', давайки в крайна сметка низа '51':

let a = 2 + 3 + '1'; alert(a); // ще изведе '51'

Без да пускате кода, определете какво ще се изведе на екрана:

let a = '5' + '2'; alert(a);

Без да пускате кода, определете какво ще се изведе на екрана:

let a = '5' + 2; alert(a);

Без да пускате кода, определете какво ще се изведе на екрана:

let a = 5 + '2'; alert(a);

Без да пускате кода, определете какво ще се изведе на екрана:

let a = 5 + 2; alert(a);

Без да пускате кода, определете какво ще се изведе на екрана:

let a = '5' * '2'; alert(a);

Без да пускате кода, определете какво ще се изведе на екрана:

let a = '5' - '2'; alert(a);

Без да пускате кода, определете какво ще се изведе на екрана:

let a = '5' / '2'; alert(a);

Без да пускате кода, определете какво ще се изведе на екрана:

let a = '5' % '2'; alert(a);

Без да пускате кода, определете какво ще се изведе на екрана:

let a = '5s' * '2'; alert(a);

Без да пускате кода, определете какво ще се изведе на екрана:

let a = '5s' + '2'; alert(a);

Без да пускате кода, определете какво ще се изведе на екрана:

let a = (-'5') + (-'2'); alert(a);

Без да пускате кода, определете какво ще се изведе на екрана:

let a = '5' * 1 + '2' * 1; alert(a);

Без да пускате кода, определете какво ще се изведе на екрана:

let a = '5' * '1' + '2' * '1'; alert(a);

Без да пускате кода, определете какво ще се изведе на екрана:

let a = '' + 3 + 1; alert(a);
Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне