Javascript: niyə var,let,const?

Farid Babayev
3 min readOct 30, 2019

--

let vs var vs const

Salam dostlar, bu gün sizlərlə bir yerdə javascript-də var,let və const açar sözlərinin(keyword) nə olduğunu, nə işə yaradığını, harda və nə üçün istifadə olunduğunu öyrənəcəyik. Hazırsınızsa o zaman lets let’s go :)

Bəzi javascript kodlarına baxanda səbəsiz yerə gah let gah da var keywordünün istifadə olunduğunu görüb qərara gəldim bu temaya bir aydınlıq gətirim. Hətda arada let falan çıxardılar başımıza birdə. Gül kimi var ilə yazırdıq deyən adamları gördüm :) . Burdan olara salam göndərirəm.

İlk öncə ECMAScript nədir? sualına baxaq. Qisa şəkildə desək ECMAScript bir script dili standartıdır. JavaScript dilinin standartlarını da təyin edir və hər kəsin bir standartda yazmağına kömək edir. Allah bu ECMAScript yaradanın atasına rəhmət eləsin deyib dönürəm mövzumuza. Hazırda bütün browserlərin dəstəklədiyi standart ES5-dir yəni ECMAScript 5. Sonradan da yeniliklərlə davam elədilər yeni versiyalar çıxdı ES6ç ES7, ES8 ve s. ES6 çıxmamışdan əvvəl var keywordündən istifadə olunurdu. let və const ES6 ilə bir yerdə gəldi və var keywordündə olan boşluqları doldurdu.

Buradan let və const keywordünün dəstəkləndiyi browserlərə baxa bilərsiniz. Deyə bilərsiniz ki, hər dəfə yeniliklər gəlir bes browserlər dəstəkləmir. O necə olacaq? Burada ortaya BabelJs kimi javascript compiler girir. Bu compiler-lar yazdığımız javascript kodunu pure js’ə yəni browserin dəstəklədiyi standarta çevirir. ECMAScript haqda bu qədər keçək mövzumuza.

Bu məqalədə aşağıdakı keywordlərdən danışacağıq.

  • no var → Global Scope
  • var → Function Scope
  • let/const → Block Scope

Amma bir dəqiqə scope? O nədi elə?

History of ECMAScript

Scope: Dəyişənin təyin olunduğu sahə kimi başa düşmək olar. Dəyişən isə həmin sahənin adı ilə adlandırılır (Global scope’da yaranan dəyişənənə global dəyişən (global varaible) deyilir.)

Global Scope

Javascriptdə hər hansı bir yerdə təyin olunan dəyişənlərə deyilir. İstənilən yerdən çağrılıb istifadə oluna bilər.

Function Scope

Sadəcə təyin olunduğu funksiya içərisində istifadə oluna bilər. Funksiyadan kənarda istifadə edilə bilməz.

Block Scope

Hər hansı { } mötərizə içində yaradılan dəyişənlərdir. if-for da daxildir yəni.

Var keywordünü niyə və nə zaman istifadə edirik?

var yəni varaible sözünün qisaldılmış versiyası. var keywordü function scope-dur.

var ad="Farid";  var uzunluq=160;  var yas;

Bəs var yazmasaq necə olar? Fikir versəz bəzən var yazmırlar. Səbəb?

Əgər var yazmasaq javascript ad,uzunluq və yas adında global dəyişən yaradıb , verilən dəyəri həmin dəyişənə mənimsədəcək. Bəs onda niye var yazırıq? nə zaman yazırıq?. Yuxarıda dediyimiz kimi var keywordü function scope-dur. Əgər yazdığımız dəyişənə funksiyanın kənarından müdaxilə olunmamasını istəyiriksə o zaman var yazırıq.

global scope
function scope

Dəyişənin dəyərini sonradan dəyişdirmək olur.

Dəyişən təkrar yaradıla bilər.

Let keywordünü niyə və nə zaman istifadə edirik?

İndiyə kimi function scope bizim üçün əlverişli idi. if,for, switch kimi scope daxilində və ya funksiya daxilində işlədirdik. Lakin async/promise, arrow function, callback iç-içə block şəklində kod yazanda orda işlər qarışır. var keywordü işimi görə bilmir artıq. Bu zaman ortaya let girir.

var keyword
let keyword

Dəyişənin dəyərini sonradan dəyişdirmək olur.

Let yalnız bir dəfə təyin olunur.

let block scope’dur.

Const keywordünü niyə və nə zaman istifadə edirik?

const constant sözünün qısaltmasıdır. Sabit deməkdir. Yəni dəyişənin aldığı dəyər dəyişə bilməz. Sabit olaraq qalır.

Const yalnız bir dəfə yaradıla bilər.

Const block scopedur. Yəni sadəcə yaradıldığı { } mötərizə içində istifadə oluna bilər.

Məndən bu qədər dostlar. Happy coding zad :)

--

--