
JavaScript interview questions axtararkən tez-tez rast gəlinən mövzulardan biri JavaScript data types – məlumat tipləridir. Frontend developer vakansiyaları üçün bu bilik vacibdir. Bu bloqda siz JavaScript data types (məlumat tipləri) və onların unikal xüsusiyyətləri haqqında öyrənəcəksiniz.
JavaScript aşağıdakı primitive data types (sadə məlumat tipləri) təqdim edir:
- null
- undefined
- boolean
- number
- string
- symbol – ES2015-dən mövcuddur
- bigint – ES2020-dən mövcuddur
və bir complex data type olan object (obyekt). JavaScript Data Types
JavaScript data types
JavaScript compiler tərəfindən tanınan sadə məlumat tiplərinə null, undefined, number, string, boolean və s. daxildir. Bu suallar frontend müsahibə sualları arasında sıxlıqla olur. JavaScript dinamik olaraq tiplənən dildir, bu o deməkdir ki, dəyişən (javascript variables) konkret bir tipə aid olmur. Başqa sözlə, bir dəyişən müxtəlif tiplərdə dəyər daşıya bilər. Məsələn:
let counter = 120; // counter is a number
counter = false; // counter is now a boolean
counter = "foo"; // counter is now a string
Dəyişəndə saxlanılan dəyərin mövcud tipini müəyyən etmək üçün typeof operatorundan istifadə olunur:
let counter = 120;
console.log(typeof(counter)); // "number"counter = false;
console.log(typeof(counter)); // "boolean"counter = "Hi";
console.log(typeof(counter)); // "string"Output:
"number"
"boolean"
"string"
JavaScript-də dəyişənlər müxtəlif tiplərdə dəyərlər ala bilər. Bu xüsusiyyət veb saytların hazırlanması zamanı çevik yanaşma təmin edir.
The undefined type
undefined tipi yalnız bir dəyərə sahib olan primitive bir tipdir: undefined. Varsayılan olaraq, əgər dəyişən elan edilibsə, lakin işə salınmayıbsa (not initialized), ona undefined dəyəri təyin olunur (defaults to undefined).
Nümunəyə baxaq:
let counter;
console.log(counter); // undefined
console.log(typeof counter); // undefined
Bu nümunədə counter bir dəyişəndir. O inicializasiya olunmadığı üçün avtomatik olaraq undefined olur. Onun tipi də undefined olacaq.
Qeyd edək ki, əgər typeof operatoru ilə elan olunmamış dəyişəni yoxlasanız da nəticə undefined olacaq:
console.log(typeof undeclaredVar); // undefined
Saytların hazırlanması zamanı dəyişənin undefined olub olmadığını yoxlamaq vacibdir. Bu nöqtədə typeof operatorundan istifadə olunur.
The null type
null tipi də yalnız bir dəyərə sahib olan ikinci primitive data type-dır: null. Məsələn:
let obj = null;
console.log(typeof obj); // object
typeof null nəticəsinin object qaytarması JavaScript-də məlum bir bug-dur. Bu problemi düzəltmək təklifi olsa da, çox sayda mövcud saytın işləməməsi riski səbəbindən rədd edilmişdir.
JavaScript-də null ilə undefined bərabər sayılır:
console.log(null == undefined); // true
Frontend developer vakansiya üçün müsahibəyə hazırlaşarkən null tipinin object kimi qaytarılması ilə bağlı suallar verilə bilər.
The number type
JavaScript number tipindən həm tam, həm də onluq ədədləri ifadə etmək üçün istifadə edir.
Tam ədəd nümunəsi:
let num = 100;
Onluq ədəd üçün decimal nöqtədən sonra rəqəm yazılır:
let price = 12.5;
let discount = 0.05;
JavaScript avtomatik olaraq onluq ədəd tam ədəd kimi görünürsə, onu integer kimi qəbul edir:
let price = 200.00; // tam ədəd kimi qəbul edilir
Ən kiçik və ən böyük rəqəmləri almaq üçün Number.MIN_VALUE və Number.MAX_VALUE istifadə olunur:
console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
console.log(Number.MIN_VALUE); // 5e-324
Sonsuzluqları göstərmək üçün Infinity və -Infinity istifadə olunur:
console.log(Number.MAX_VALUE + Number.MAX_VALUE); // Infinity
console.log(-Number.MAX_VALUE - Number.MAX_VALUE); // -Infinity
JavaScript interview questions arasında Number.MIN_VALUE və NaN anlayışları da yer alır. Veb sayt hazırlamaq istəyənlər bu əsasları mütləq öyrənməlidirlər.
NaN
NaN (Not a Number) – keçərsiz ədədi ifadə edən xüsusi bir rəqəm tipidir. Məsələn:
console.log('a'/2); // NaN;
NaN iki əsas xüsusiyyətə malikdir:
- NaN ilə edilən istənilən əməliyyat NaN qaytarır.
- NaN heç bir dəyərə, hətta özünə belə bərabər deyil:
console.log(NaN/2); // NaN
console.log(NaN == NaN); // false
The string type
JavaScript-də string sıfır və ya daha çox simvoldan ibarət olan mətn tipidir. String həm tək (‘ ’), həm də qoşa (“ ”) dırnaqla yazıla bilər:
let greeting = 'Hi';
let message = "Bye";
Əgər string daxilində dırnaq istifadə etmək lazımdırsa, \ istifadə olunur:
let message = 'I\'m also a valid string';
JavaScript string-ləri immutable-dur, yəni dəyişdirilə bilməz. Amma yeni string yaradıla bilər:
let str = 'JavaScript';
str = str + ' String';
Aşağıdakı nümunədə string-in ilk simvolunu dəyişmək cəhdi uğursuz olacaq:
let s = 'JavaScript';
s[0] = 'j';
console.log(s) // 'JavaScript'
Saytların hazırlanması zamanı string-lərin immutable olması vacib məqamdır. Front end vakansiya müsahibələrində bu tip detallı suallar verilir.
The boolean type
boolean tipində yalnız iki dəyər olur: true və false. Məsələn:
let inProgress = true;
let completed = false;console.log(typeof completed); // boolean
JavaScript digər tipləri boolean-ə çevirməyə icazə verir. Bu zaman Boolean() funksiyası istifadə olunur:
Tip | true | false |
---|---|---|
string | non-empty string | empty string |
number | non-zero və Infinity | 0, NaN |
object | non-null object | null |
undefined | - | undefined |
Nümunələr:
console.log(Boolean('Hi'));// true
console.log(Boolean('')); // falseconsole.log(Boolean(20)); // true
console.log(Boolean(Infinity)); // true
console.log(Boolean(0)); // falseconsole.log(Boolean({foo: 100})); // true
console.log(Boolean(null));// false
Boolean tipli dəyişənlər true və false dəyərləri ilə frontend tətbiqlərdə geniş istifadə olunur. Saytların hazirlanmasi zamanı şərt operatorları ilə sıx işlənir.
The symbol type
JavaScript ES6 ilə symbol adlı yeni primitive tip əlavə edib. Bu tipin literal forması yoxdur. Yeni symbol yaratmaq üçün Symbol() funksiyasından istifadə olunur:
let s1 = Symbol();
console.log(Symbol() == Symbol()); // false
ES6 ilə gələn Symbol tipi müasir vebsayt hazırlanması zamanı unikal identifikator kimi istifadə olunur. Bu sual JavaScript interview questions siyahısında yer ala bilər.
The bigint type
bigint tipi 2^53 - 1-dən böyük ədədləri ifadə etmək üçün istifadə olunur. Ədədi n ilə bitirərək bigint təyin edilir:
let pageView = 9007199254740991n;
console.log(typeof(pageView)); // 'bigint'
Əgər ədədi dəyərlər 2^53-dən böyükdürsə, BigInt istifadə olunmalıdır. Bu xüsusiyyət yeni nəsil saytların hazırlanması üçün önəmlidir.
The object type
JavaScript-də object, key-value (açar-dəyər) cütlərindən ibarət property-lər toplusudur.
Aşağıdakı nümunədə obyekt literal sintaksisi ilə boş bir obyekt müəyyən olunub:
let emptyObject = {};
Aşağıdakı nümunədə isə person (şəxs) adlı obyekt yaradılıb və bu obyektin firstName (ad) və lastName (soyad) adlı iki xüsusiyyəti var:
let person = {
firstName: 'John',
lastName: 'Doe'
};
Bir obyektin xüsusiyyətinin adı istənilən mətn (string) ola bilər. Əgər bu ad JavaScript-də etibarlı identifikator deyilsə, onu dırnaq içərisində yazmaq lazımdır.
Məsələn, əgər person obyektində first-name adlı bir xüsusiyyət varsa, onu "first-name" şəklində dırnaq içərisində yazmaq lazımdır. (məsələn, boşluq və ya - simvolu istifadə olunursa)
let person = {
"first-name": "John"
};
Bir obyektin xüsusiyyəti həmçinin başqa bir obyekt də ola bilər. Məsələn:
let contact = {
firstName: 'John',
lastName: 'Doe',
email: 'john.doe@example.com',
phone: '(408)-555-9999',
address: {
building: '4000',
street: 'North 1st street',
city: 'San Jose',
state: 'CA',
country: 'USA'
}
}
Bu nümunədə contact obyektində firstName, lastName, email, phone və address xüsusiyyətləri var. address xüsusiyyəti isə bir obyekt olub aşağıdakı xüsusiyyətlərə malikdir: building, street, city, state, country.
JavaScript-də object tipi frontend developer üçün əsas anlayışlardan biridir. Frontend müsahibə sualları arasında obyektlərlə işləmə bacarığı da qiymətləndirilir.
Obyekt xüsusiyyətlərinə müraciət
Nöqtə notasiya üsulu (dot notation)
Aşağıdakı nümunədə contact obyektinin firstName və lastName xüsusiyyətlərinə nöqtə notasiya ilə müraciət olunur:
console.log(contact.firstName);
console.log(contact.lastName);
Əgər mövcud olmayan xüsusiyyətə müraciət etsəniz, nəticə undefined olacaq:
console.log(contact.age); // undefined
Array-oxşar notasiya (kvadrat mötərizə ilə - bracket notation)
Alternativ olaraq, xüsusiyyətə kvadrat mötərizə ilə də müraciət edə bilərsiniz:
console.log(contact['phone']); // '(408)-555-9999'
console.log(contact['email']); // 'john.doe@example.com'
Bu üsul xüsusilə xüsusiyyətin adı dəyişkənlə təyin olunanda və ya qeyri-standart ad olanda faydalıdır (məsələn, "first-name").
Saytların hazirlanmasi zamanı obyektlərdəki məlumatlara dot və bracket notasiya ilə müraciət edilir. Bu biliklər frontend developer vakansiyası üçün vacibdir.
Nəticə
Bu bloq yazısı JavaScript data types mövzusunu ətraflı izah edir və frontend developer olmaq istəyənlər, müsahibəyə hazırlaşanlar və ya saytların hazırlanması ilə məşğul olanlar üçün əsas məlumat bazası rolunu oynayır. Əgər siz də "JavaScript interview questions", "frontend müsahibə sualları", ya da "veb sayt hazırlanması" kimi axtarışlar edirsinizsə, bu məlumatlar sizin üçün əvəzolunmaz olacaq.
JavaScript Müsahibə Sualları - JavaScript Interview Questions
this açar sözünün funksiyadakı davranışı necə fərqlənir?
const person = {
name: "Aysel",
sayHi: function () {
console.log("Hi, I'm " + this.name);
},
};const greet = person.sayHi;
greet(); // Nəticə nə olacaq?
Bu sualda yoxlanılır:
- this konteksti necə işləyir
- Obyektdən kənarda funksiyanın çağırılması zamanı nə baş verir
JavaScript-də == və === fərqi nədir?
Nümunə cavab gözləntisi:
== tip çevirməsi aparır və yalnız dəyərləri müqayisə edir, === isə həm tip, həm də dəyəri yoxlayır.
0 == "0" // true
0 === "0" // false
map() və forEach() metodları arasında fərq nədir?
Nümunə cavab gözləntisi:
map() yeni array qaytarır, forEach() isə sadəcə hər elementi işləyir, nəticə qaytarmır.
let numbers = [1, 2, 3];
let doubled = numbers.map(num => num * 2); // [2, 4, 6]numbers.forEach(num => console.log(num * 2)); // nəticə konsola yazılır, array qaytarmır