⊗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
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა