Data Tipləri-Data Types

Proqram təminatında (software) ən vacib şey məlumatdır (data). Proqram yazarkən, məlumatları toplayır, emal edir və onlardan mənalı nəticələr əldə edirik. Məsələn, bir oyun yaratmaq və ya veb tətbiqləri qurmaq kimi proseslər hamısı məlumatlarla sıx əlaqəlidir.

Məlumatları düzgün idarə üçün müxtəlif məlumat tiplərindən(data types) istifadə olunur.

JavaScript də 8 data tip(data types) var:

  • number
  • string
  • boolean
  • undefined
  • null
  • bigint
  • symbol
  • object

Və bunlar iki kateqoriyaya bölünür: primitiv (primitive) və primitiv olmayan (non-primitiv) tiplər.

Primitiv (primitive)

Object istisna olmaqla, digər 7 tip primitivdir.

Primitiv dəyərlər aşağıdakı xüsusiyyətlərə malikdir:

  • Primitiv məlumat növləri yalnız bir dəyər saxlaya bilər.
  • İmmutable dəyərlərdir: bir dəfə yaratdiqdan sonra dəyişmək olmaz.
  • Onlar memory stack də saxlanılır.
let sayHi = "Salam!";
console.log(sayHi); // Salam!
console.log(sayHi[0]); // S
sayHi[0] = "T";
console.log(sayHi); // Salam!

Kodda göründüyü kimi, string immutable dəyərdir və dəyişdirilə bilmir.

2-ci nümunəyə baxaq:

let name = "JavaScript";
name = "Typescript";

Burada name dəyişənini “TypeScript” ilə yenidən təyin etdik (reassign). İlk baxışda name dəyişmiş kimi görünsə də, əslində yaddaşda name adlı yeni bir yer yaradıldı və “TypeScript” dəyəri ora yazıldı. name dəyişəni artıq “JavaScript” dəyərini saxlamır “TypeScript” dəyərinə işarə edir.

Bütün primitive data tipləri immutable-dır, çünki onların dəyərləri heç vaxt dəyişmir. Bu o deməkdir ki, bir primitive dəyəri dəyişdirdikdə, yeni bir dəyər yaradılır və bu yeni dəyər yaddaşda yeni bir yerə yazılır.

Memory stack nədir?

Məlumatlarımızı saxlamaq və yazmaq üçün bir yerə ehtiyacımız var. JavaScript-də heapstack adlanan iki əsas yaddaş sahəsi mövcuddur.

Stack: Statik məlumatları (sabit ölçülü verilənlər) saxlayır. Primitive dəyərlər dəyişməz və sabit olduğuna görə burada saxlanılır.

Heap: Dinamik məlumatları saxlayır. Obyetlər (objects), massivlər (arrays) və funksiyalar (functions) kimi daha mürəkkəb verilənlər burada saxlanılır. Heap-də verilənlər dinamik olaraq yaradılır və ölçüləri dəyişə bilir.

Primitiv olmayan (non-primitiv)

Obyekt tipi yeganə qeyri-primitiv məlumat növüdür(data type). JavaScript-də hər şey Obyet olduğu üçün bura function array də daxildir.

non-primitiv dəyərlər aşağıdakı xüsusiyyətlərə malikdir:

  • Primitiv olmayan data tipləri çoxlu dəyər saxlaya bilər.
  • Mutable dəyərlərdir: dəyərləri(value) dəyişə bilər
  • Onlar memory Heap də saxlanılır.
let numbers = [2, 4, 6, 8, 10];
numbers.push(12);
console.log(numbers); // [2,4,6,8,10,12]

Obyektlər mutable dəyər olduğu üçün onların dəyərlərini dəyişdirmək mümkündür. Bu nümunədə numbers massivi əvvəlcə [2, 4, 6, 8, 10] dəyərlərini sağlayır. push metodu ilə massivin sonuna 12 dəyəri əlavə edirik. Bu zaman numbers massivi yaddaşda eyni yerdə qalır, amma içindəki dəyərlər dəyişir. Yəni, obyektin içərisindəki dəyərləri dəyişdirərək, yaddaşda eyni yerə işarə etməyə davam edirik.




PrimitiveNon-Primitive
Number, string, boolean, undefined, null, bigint, symbol primitiv data tiplərdirObject, array, functions non-primitiv data tiplərdir
Yalnız bir dəyər saxlaya bilər.Çoxlu dəyər saxlaya bilər.
İmmutable dəyərlərdirMutable dəyərlərdir
Stack də saxlanılır.Heap də saxlanılır.