⊗jsPmBsATC 43 of 505 menu

Veri Tiplərinin Avtomatik Çevrilməsi

Artıq bildiyiniz kimi, JavaScript-də sətirlər dırnaq işarələri içində yazılmalıdır. Bəzən sətirin bütün simvolları rəqəmlərdən ibarət ola bilər:

let a = '123';

Bu halda a dəyişəni də sətirdir, lakin bir nüansla.

Nüans ondadır ki, əgər rəqəmli sətir üzərində hər hansı riyazi əməliyyat yerinə yetirilsə - bu əməliyyat elə icra olunacaq ki, sanki bizim həqiqətən sətir deyil, rəqəmlərimiz var:

alert('2' * '3'); // 6 çap edəcək

Bu halda JavaScript görür ki, biz sətirlər üçün qadağan olunmuş, lakin rəqəmlər üçün icazə verilmiş əməliyyat yerinə yetirməyə çalışırıq.

O, həmçinin görür ki, əslində bizim sətirlərimiz dırnaq işarələri içində yazılmış rəqəmlərdir. Buna görə də JavaScript bu sətirləri avtomatik şəkildə rəqəmlərə çevirir və onlar üzərində müvafiq riyazi əməliyyatı yerinə yetirir.

Bu, yalnız sətirlərimizdə ancaq rəqəmlər olduqda işləyir. Əgər orda ən azı bir hərf olarsa - JavaScript əməliyyatı düzgün hesab etməyəcək və onun nəticəsi kimi NaN dəyərini çap edəcək:

alert('2' * '3s'); // NaN çap edəcək

Bundan əlavə, avtomatik çevrilmə baş verir, əgər əməliyyat riyazi cəhətdən düzgündürsə, lakin sətirlər üçün icazə verilmir.

Məsələn, sətirləri vurmaq, bölmək, çıxmaq olmaz (rəqəmləri isə olar), buna görə də bütün belə əməliyyatlarda rəqəmli sətirlərin rəqəmlərə avtomatik çevrilməsi baş verəcək.

Lakin, sətirlər də, rəqəmlər kimi, + operatoru ilə toplanır. Bu o deməkdir ki, toplama zamanı avtomatik çevrilmə baş verməyəcək:

let a = '1' + '2'; alert(a); // '12' çap edəcək - sətirlərin toplanması baş verdi

Əgər toplananlardan biri rəqəm, digəri isə sətirdirsə, həmişə sətir qalib gəlir:

let a = 1 + '2'; alert(a); // '12' çap edəcək

Belə hallarda JavaScript, əksinə olaraq, rəqəmləri avtomatik şəkildə sətirlərə çevirir və sətirlərin toplanmasını yerinə yetirir.

Lakin, toplananların sayı ikidən çox olduqda nüanslar var: bu halda müəyyən tipə çevrilmə əməliyyatların yerinə yetirilmə sırasından asılıdır.

Aşağıdakı nümunədə əvvəlcə 23 rəqəmlər kimi toplanacaq, sonra nəticə sətir '1'-ə artıq sətir '5' kimi əlavə olunacaq, bu da nəticədə '15' sətirini verəcək:

let a = '1' + (2 + 3); alert(a); // '15' çap edəcək

Əgər mötərizələri çıxarsaq, onda hər şey soldan sağa toplanacaq. Yəni əvvəlcə sətir '1'-ə rəqəm 2 əlavə olunacaq və nəticədə sətir '12' alınacaq. Sonra bu sətirə rəqəm 3 əlavə olunacaq və nəticədə sətir '123' alınacaq:

let a = '1' + 2 + 3; alert(a); // '123' çap edəcək

Lakin aşağıdakı nümunədə 23 rəqəmləri əvvəldə yazıldığına görə əvvəlcə onlar rəqəmlər kimi toplanacaq, nəticədə rəqəm 5 verəcək, sonra bu rəqəmə sətir '1' əlavə olunacaq, nəticədə '51' sətirini verəcək:

let a = 2 + 3 + '1'; alert(a); // '51' çap edəcək

Kodu işə salmadan müəyyən edin ki, ekranda nə çap olunacaq:

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

Kodu işə salmadan müəyyən edin ki, ekranda nə çap olunacaq:

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

Kodu işə salmadan müəyyən edin ki, ekranda nə çap olunacaq:

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

Kodu işə salmadan müəyyən edin ki, ekranda nə çap olunacaq:

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

Kodu işə salmadan müəyyən edin ki, ekranda nə çap olunacaq:

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

Kodu işə salmadan müəyyən edin ki, ekranda nə çap olunacaq:

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

Kodu işə salmadan müəyyən edin ki, ekranda nə çap olunacaq:

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

Kodu işə salmadan müəyyən edin ki, ekranda nə çap olunacaq:

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

Kodu işə salmadan müəyyən edin ki, ekranda nə çap olunacaq:

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

Kodu işə salmadan müəyyən edin ki, ekranda nə çap olunacaq:

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

Kodu işə salmadan müəyyən edin ki, ekranda nə çap olunacaq:

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

Kodu işə salmadan müəyyən edin ki, ekranda nə çap olunacaq:

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

Kodu işə salmadan müəyyən edin ki, ekranda nə çap olunacaq:

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

Kodu işə salmadan müəyyən edin ki, ekranda nə çap olunacaq:

let a = '' + 3 + 1; alert(a);
Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČ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
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et