
Bu bloqda JavaScript-dəki rəqəm tipləri və onların effektiv istifadəsi ilə tanış olacaqsınız.
JavaScript Number - Giriş | frontend developer üçün əsas bilik
Frontend developer olaraq JavaScript number tipi ilə işləməyi öyrənmək vacibdir, çünki bu bilik real layihələrdə veb saytların hazırlanması zamanı istifadə olunur. JavaScript həm tam ədədləri, həm də onluq kəsrləri təmsil etmək üçün number tipindən istifadə edir. Texniki olaraq, JavaScript number tipi IEEE-754 formatından istifadə edir.
ES2020, 2 üstü 23 –1-dən böyük olan böyük tam ədədləri təmsil edən bigint adlı yeni bir primitiv tipi təqdim etdi.
Fərqli rəqəm tiplərini dəstəkləmək üçün, JavaScript müxtəlif number literal formatlarından istifadə edir.
Tam Ədədlər
Frontend vakansiya sualları arasında JavaScript-in rəqəm formatları tez-tez soruşulur. JavaScript compiler bu ədədləri müxtəlif yollarla təhlil edir.
Aşağıdakı nümunədə onluq tam ədəd saxlayan dəyişənin necə elan olunacağı göstərilir:
let counter = 100;
Tam ədədlər aşağıdakı formatlarda təmsil oluna bilər:
- Octal (base 8)
- Hexadecimal (based 16)
Octal və Hexadecimal ədədlər riyazi əməliyyatlarda istifadə edildikdə, JavaScript onları onluq ədəd kimi qəbul edir.
JavaScript-də Səkkizli Ədədlər və ES6 ilə Gələn Təhlükəsiz Yazım
Səkkizli və onaltılıq ədədlər ilə düzgün işləmək veb sayt hazırlanması və rəqəmlərin vizual şəkildə göstərilməsi üçün önəmlidir.
Bu biliklər frontend developer vakansiyası üçün müsahibə zamanı dəyərləndirilə bilər.
Octal literal ədəd sıfır (0) rəqəmi ilə başlayır və ardınca octal rəqəmlər (0-dan 7-yə qədər) gəlir. Məsələn:
let num = 071;
console.log(num);Output:
57
JavaScript-də ədəd sıfır (0) ilə başladıqda, bəzi hallarda onun sətrini səkkizli (octal) ədəd kimi təhlil etməyə çalışır. Amma bu, yalnız ES5 və daha əvvəlki versiyalarda idi. ES6 və daha sonrakı versiyalarda isə bu cür yazım ya səhv verəcək, ya da onluq (decimal) kimi qəbul ediləcək.
Bu nümunəyə baxaq:
let num = 080;
console.log(num);
- 080 burada "səkkizli ədəd kimi" yazılmış kimi görünür, çünki 0 ilə başlayır.
- Amma səkkizli sistemdə yalnız 0–7 rəqəmləri istifadə olunur. 8 rəqəmi səkkizli sistemdə yoxdur.
- Buna görə də, JavaScript bu cür halı gördükdə, köhnə versiyalarda “octal kimi tanınmır, decimal kimi qəbul olunur”.
- Yəni 080 onluq ədəd olan 80 kimi oxunur.
Bu cür səssiz davranışlar proqramda səhvlərə səbəb ola bilər. Bu problemi aradan qaldırmaq üçün ES6 ilə birlikdə yeni bir yazım qaydası təqdim olundu. Artıq səkkizli ədəd yazmaq üçün 0o prefiksi istifadə olunur və yalnız 0-dan 7-yə qədər olan rəqəmlər yazıla bilər:
let num = 0o71;
console.log(num); // 57
Burada 0o71 səkkizli sistemdə 7×8 + 1 = 57 deməkdir.
Əgər 0o ilə başlayan bir ədəddə səkkizli sistemə uyğun olmayan bir rəqəm istifadə etsəniz, məsələn:
let num = 0o80;
console.log(num);
JavaScript bu zaman sizə syntax xətası (SyntaxError) verəcək:
let num = 0o80;
^^
SyntaxError: Invalid or unexpected token
Bu səbəbdən, ES6 və sonrası versiyalarda səkkizli ədəd istifadə edərkən 0o ilə başlayıb yalnız 0–7 rəqəmlərini daxil etmək vacibdir. Bu yazım həm daha aydın, həm də təhlükəsiz hesab olunur.
Saytların hazırlanması zamanı kodun oxunaqlılığı və təhlükəsizliyi xüsusilə önəm daşıyır. Xüsusilə frontend developerlər üçün səhvlərin və gözlənilməz nəticələrin qarşısını almaq vacibdir. ES6 ilə gələn bu yenilik frontend developer-lar üçün həm kodun təhlükəsizliyini artırır, həm də debug prosesində vaxta qənaət edir. Doğru ədədi formatlama ilə gözlənilməz nəticələrin qarşısını almaq mümkündür.
JavaScript-də Onaltılıq (Hexadecimal) Ədədlər
JavaScript-də onaltılıq (hexadecimal) ədədləri təyin etmək üçün 0x və ya 0X prefiksi istifadə olunur. Bu ədədlər 0–9 və a–f (və ya A–F) rəqəmlərindən ibarət ola bilər. a hərfi burada 10-u, f isə 15-i təmsil edir.
let num = 0x1a;
console.log(num); // 26
Burada 0x1a aşağıdakı kimi hesablana bilər:
- 1a → (1 × 16) + (10 × 1) = 26
Yəni 0x1a onaltılı sistemdədir, amma nəticədə onluq ədəd olaraq 26 qaytarır.
Onaltılıq ədədlər JavaScript-də çox vaxt rəng kodları, bit əməliyyatları, mənbə səviyyəsində işləmə, və aşağı səviyyəli proqramlaşdırma üçün istifadə olunur. Hexadecimal ədədlər CSS rəng kodları ilə işləyən frontend developer üçün vacibdir.
Məsələn, #ff0000 rəngi JavaScript-də 0xff0000 kimi istifadə oluna bilər.
JavaScript-də Onluq (Floating-point) Ədədlər
JavaScript-də onluq ədədlər (kəsr hissəli ədədlər) təyin etmək üçün nöqtə (.) istifadə olunur. Bu ədədlər floating-point literals adlanır və nöqtədən sonra ən azı bir rəqəm olmalıdır.
let price = 9.99;
let tax = 0.08;
let discount = .05; // valid but not recommended
discount = .05 şəklində yazmaq texniki olaraq doğrudur, lakin 0.05 kimi yazılması daha düzgündür və oxunaqlıdır.
Onluq ədədlərlə işləmə zamanı JavaScript compiler qeyri-dəqiq nəticələr verə bilər. Bu cür hallar frontend developer müsahibə sualları arasında tez-tez test edilir.
Elmi Notasiya (E-notation)
Çox böyük və ya çox kiçik ədədləri daha qısa və rahat şəkildə göstərmək üçün JavaScript-də elmi notasiya istifadə olunur. Bu zaman e simvolu 10-un qüvvətinə vurulmanı və ya bölünməni bildirir.
Böyük onluq ədəd:
let amount = 3.14e7;
console.log(amount); // 31400000
Burada 3.14e7 → 3.14 × 10⁷ = 31,400,000
Kiçik onluq ədəd:
let amount = 5e-7;
console.log(amount); // 0.0000005
Burada 5e-7 → 5 / 10⁷ = 0.0000005.
JavaScript-də Avtomatik E-notation Dəyişməsi
JavaScript müəyyən hallarda çoxlu sıfır ehtiva edən onluq ədədləri avtomatik olaraq e-notation formasına çevirir:
let amount = 0.0000005;
console.log(amount); // 5e-7
Onluq Ədədlərlə Dəqiqlik Problemi
JavaScript-də onluq ədədlərlə hesablamalar apararkən dəqiqlik itkiləri baş verə bilər:
let result = 0.2 + 0.1;
console.log(result); // 0.30000000000000004
Bu, JavaScript-in daxili olaraq IEEE 754 standartına əsaslanması ilə əlaqədardır. Belə hallarda toFixed(), toPrecision() və ya dəqiq hesablama aparmaq üçün kitabxanalar istifadə olunur. Veb saytlarin hazirlanmasi zamanı pul, faiz, endirim kimi məlumatlarla işləyərkən bu tip problemləri nəzərə almaq vacibdir.
JavaScript-də Böyük Tam Ədədlər (BigInt)
JavaScript-də böyük tam ədədlər — yəni 2⁵³−1 (9007199254740991) sərhədini aşan ədədlər — əvvəllər Number tipi ilə təyin edilə bilmirdi. Bu isə böyük dəqiqlik tələb edən maliyyə, kriptoqrafiya və ya elmi hesablama sahələrində problem yaradırdı.
ES2022-dən etibarən BigInt adlı yeni bir tip əlavə olundu. Bu tip, çox böyük tam ədədləri təhlükəsiz şəkildə saxlamağa və istifadə etməyə imkan verir.
BigInt literalı yaratmaq üçün ədədi yazıb sonuna n hərfi əlavə olunur:
let pageView = 9007199254740991n;
console.log(pageView); // 9007199254740991n
Buradakı n simvolu ədədin BigInt olduğunu bildirir.
Nəticə
JavaScript-də number tipi ilə işləmək frontend developer olmaq istəyən hər kəs üçün əsas biliklərdən biridir. Bu yazıda tam ədədlər, onluq ədədlər, onaltılıq və səkkizli sistemlər, elmi notasiya, dəqiqlik problemləri və BigInt kimi mövzular izah olunub. Bu biliklər yalnız nəzəri deyil, real layihələrdə — veb saytların hazırlanması, rəng kodlarının işlənməsi, vergilər və endirimlərin hesablanması, maliyyə sistemləri və vizual məlumatların göstərilməsi sahələrində birbaşa tətbiq olunur.
ES6 və ES2020 ilə birlikdə gələn yeni yazım qaydaları, təhlükəsiz kodlama və oxunaqlılığı artırmaq üçün frontend developerlər üçün vacib yeniliklərdir. Misal üçün, 0o və 0x prefiksli yazımlar kodun təhlükəsizliyini artırır və SyntaxError kimi səhvlərin qarşısını alır.
Əlavə olaraq, floating-point ədədlərlə hesablama zamanı baş verə biləcək dəqiqlik itkiləri JavaScript-in IEEE-754 standartına əsaslanması ilə əlaqəlidir və bu, frontend müsahibələrində tez-tez soruşulan suallardandır. Bu problemləri aradan qaldırmaq üçün toFixed(), toPrecision() və ya BigInt kimi funksiyalar və tiplərdən istifadə olunur.
Frontend developer olaraq rəqəmlərlə düzgün və təhlükəsiz işləməyi bacarmaq həm kod keyfiyyətini yüksəldir, həm də layihə vaxtı xətaların və gözlənilməz nəticələrin qarşısını alır.
Frontend Müsahibə Sualları
JavaScript-də Number və BigInt fərqi nədir?
Number tipi yalnız 2⁵³−1-ə qədər olan tam ədədləri dəqiq saxlaya bilər. Daha böyük ədədlərlə işləmək üçün BigInt tipi istifadə olunur. BigInt literalı n simvolu ilə yazılır (məs., 123456789n). Bu tip maliyyə, kriptoqrafiya və böyük dəqiqlik tələb edən hesablama sahələrində istifadə olunur.
JavaScript-də niyə 0.2 + 0.1 bərabər deyil 0.3-ə?
Bu, JavaScript-in floating-point hesablamalarda IEEE-754 standartından istifadə etməsi ilə əlaqədardır. 0.2 + 0.1 əslində 0.30000000000000004 nəticəsini verir. Bu problemi toFixed(), toPrecision() funksiyaları və ya xüsusi kitabxanalar ilə həll etmək olar.
JavaScript-də səkkizli (octal) ədədlər necə yazılır və hansı səhvlər ola bilər?
ES6-dan sonra səkkizli ədədlər 0o prefiksi ilə yazılır, məsələn: let num = 0o71;. Əgər səkkizli sistemə uyğun olmayan bir rəqəm (8 və ya 9) istifadə olunarsa (let num = 0o80;), JavaScript SyntaxError verir. Bu yazım qaydası daha təhlükəsiz və oxunaqlıdır.