- Hesab operatorları, o cümlədən qalıq operatoru
%ilə hesablamalar aparmaq ===ilə==arasındakı fərqi izah etmək- Gizli və açıq tip çevrilməsini tanımaq və
Number()ilə sətri ədədə çevirmək &&,||,!operatorlarını və truthy/falsy qiymətləri başa düşmək
Kiçik bir tapmaca: JavaScript-də '5' + 3 ifadəsinin nəticəsi '53', '5' - 3 ifadəsininki isə 2-dir. Niyə toplamada ədədlər «yapışır», çıxmada isə düzgün hesablanır? Bu dərsdə operatorları və JavaScript-in tipləri öz-özünə necə çevirdiyini öyrənəcəksən.
Hesab operatorları
Toplama, çıxma, vurma və bölmədən başqa JavaScript-də iki faydalı operator var. % bölmənin qalığını verir: 7 % 3 = 1. ** isə qüvvətə yüksəldir: 2 ** 3 = 8. Qalıq ədədin cüt olub-olmadığını yoxlamaq üçün əlverişlidir: n % 2 sıfırdırsa, ədəd cütdür.
console.log(7 + 3);
console.log(7 - 3);
console.log(7 * 3);
console.log(7 / 2);
console.log(7 % 3);
console.log(2 ** 10);
console.log(2 + 3 * 4);
console.log((2 + 3) * 4);▸ Gözlənilən nəticə
10 4 21 3.5 1 1024 14 20
Riyaziyyatdakı kimi, vurma və bölmə toplamadan əvvəl yerinə yetirilir, mötərizə isə sıranı dəyişir. Dəyişənin qiymətini dəyişmək üçün qısa yazılışlar da var: x += 5 ifadəsi x = x + 5 deməkdir, x++ isə qiyməti 1 artırır.
let coins = 10;
coins += 5;
console.log(coins);
coins -= 3;
console.log(coins);
coins *= 2;
console.log(coins);
coins++;
console.log(coins);▸ Gözlənilən nəticə
15 12 24 25
Müqayisə: === və ==
Müqayisə operatorları (>, <, >=, <=) həmişə true və ya false qaytarır. Bərabərliyi yoxlamaq üçün iki üsul var. Ciddi bərabərlik === həm qiyməti, həm də tipi yoxlayır. Sərbəst bərabərlik == isə müqayisədən əvvəl tipləri çevirir və buna görə gözlənilməz nəticələr verə bilər.
console.log(5 > 3);
console.log(5 === 5);
console.log(5 === '5');
console.log(5 == '5');
console.log(0 == false);
console.log(5 !== '5');▸ Gözlənilən nəticə
true true false true true true
Tip çevrilməsi
Operator fərqli tipli qiymətlərlə işləyəndə JavaScript-in onları avtomatik olaraq bir tipə çevirməsi.
Tapmacanın cavabı belədir: + operatoru həm ədədləri toplayır, həm də sətirləri birləşdirir. Tərəflərdən biri sətirdirsə, JavaScript o biri tərəfi də sətrə çevirir və onları yapışdırır. -, *, / isə yalnız ədədlərlə işləyir, ona görə sətirləri ədədə çevirirlər. Ədədə çevrilə bilməyən qiymət NaN (Not a Number — «ədəd deyil») verir.
console.log('5' + 3);
console.log('5' - 3);
console.log('5' * '2');
console.log(true + 1);
console.log('hello' * 2);
console.log(typeof NaN);▸ Gözlənilən nəticə
53 2 10 2 NaN number
Təxmin etməkdənsə, tipi özün çevirmək daha etibarlıdır — buna açıq çevrilmə deyilir. Number() qiyməti ədədə, String() sətrə, Boolean() isə məntiqi qiymətə çevirir. parseInt() sətrin əvvəlindəki tam ədədi oxuyur, məsələn, '42px' sətrindən 42-ni.
const input = '25';
console.log(input + 5);
console.log(Number(input) + 5);
console.log(Number('abc'));
console.log(parseInt('42px'));
console.log(String(100) + 1);▸ Gözlənilən nəticə
255 30 NaN 42 1001
Məntiqi operatorlar və truthy/falsy
&&(VƏ) — hər iki şərt doğrudursa, nəticə doğrudur.||(VƏ YA) — ən azı biri doğrudursa, nəticə doğrudur.!(DEYİL) — qiyməti tərsinə çevirir:!truefalseolur.
Şərt yerində istənilən qiymət işlənə bilər. Altı qiymət falsy (yalan kimi qəbul edilən) sayılır: false, 0, boş sətir '', null, undefined və NaN. Qalan bütün qiymətlər truthy-dir — hətta '0' və 'false' sətirləri də, çünki onlar boş deyil.
const age = 16;
const hasTicket = true;
console.log(age >= 14 && hasTicket);
console.log(age >= 18 && hasTicket);
console.log(age >= 18 || hasTicket);
console.log(!hasTicket);
console.log(Boolean(''), Boolean('0'), Boolean(0));▸ Gözlənilən nəticə
true false true false false true false
Qiymət formadan sətir kimi gəlib: '15'. Üç sətir çap et: price * quantity, price + quantity və nəhayət, price-ı Number() ilə ədədə çevirib düzgün cəmi. Nəticələri əvvəlcə təxmin et, sonra yoxla.
const price = '15';
const quantity = 3;
// 1) print price * quantity
// 2) print price + quantity
// 3) print the correct sum using Number()▸ Gözlənilən nəticə
45 153 18
Əsas fikirlər
%bölmənin qalığını verir (7 % 3= 1);+=və++dəyişəni qısa yolla yeniləyir.===qiyməti və tipi yoxlayır;==tipləri çevirdiyi üçün ondan qaç.- Tərəflərdən biri sətirdirsə,
+birləşdirir;-,*,/isə sətirləri ədədə çevirir. Number(),String(),Boolean()tipi açıq şəkildə çevirir; alınmayandaNaNyaranır.- Falsy qiymətlər:
false,0,'',null,undefined,NaN; qalanları truthy-dir.
Özünü yoxla
10 sual. Hər düzgün cavab XP qazandırır.
'10' + 5 ifadəsinin nəticəsi nədir?