Məzmuna keç
Educora
Başlanğıc14 dəq3 / 27

Operatorlar və tip çevrilməsi

Hesab, müqayisə və məntiqi operatorları öyrən və `'5' + 3` ifadəsinin niyə `'53'` verdiyini anla.

Özünü yoxla
Bu dərsdə öyrənəcəksən
  • 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.

JavaScript
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.

JavaScript
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.

JavaScript
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

Tərif
Gizli tip çevrilməsi (coercion)

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.

JavaScript
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.

JavaScript
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: !true false olur.

Şə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.

JavaScript
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
Tapşırıq

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.

Tapşırıq · JavaScript
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ınmayanda NaN yaranı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.

1 / 10
'10' + 5 ifadəsinin nəticəsi nədir?