Loading...

Ən Populyar JavaScript Müsahibə Sualları və Cavabları

Ləman İbrahimli Author
12 İyul, 2022 icon-read 5300 oxunma

Ən Populyar JavaScript Müsahibə Sualları və Cavabları

JavaScript-in ən əsas xüsusiyyətləri hansılardır?

JavaScript həm müştəri tərəfi, həm də server tərəfi inkişafı üçün istifadə edilən ən populyar veb script dilidir. Obyekt yönümlü proqramlaşdırmanı dəstəkləyən JavaScript veb-brauzerlər tərəfindən başa düşülə və icra oluna bilən HTML səhifələrinə daxil edilə bilər.

Obyekt yönümlü:

Polimorfizmi, inkapsulyasiyanı və irsiliyi müəyyən dərəcədə dəstəkləyən obyekt yönümlü script dilidir.

Tərcüməçi dil:

Tərcüməçi dili əmri oxuyaraq onu işlədiyi maşının təlimat dəstinə çevirməklə mənbə kodunu icra edən proqramdır. Tərcümə ilə işləyən yüksək səviyyəli dillər birbaşa tərcümə edilmir. O, adətən Bytecode kimi aralıq formada tərtib edilir və bu kodlar təfsir edilir və doğma maşın dilinə tərcümə edilir və işlədilir.

JavaScript brauzerdə işləyir:

Siz JavaScript-i Google Chrome, Internet Explorer, Safari kimi brauzerlərdə işlədə bilərsiniz.  JavaScript təkcə brauzerdə deyil, həm də serverdə və JavaScript Mühərriki olan istənilən cihazda işlədilə bilər.

Brauzerlər tərəfindən istifadə olunan JavaScript Mühərrikləri:

  • Chrome — V8
  • Firefox — SpiderMonkey
  • IE — Chakra
  • Safari — JavaScriptCore

== və === arasındakı fərq nədir? 

JavaScript 3 fərqli dəyər müqayisəsi təklif edir: Ciddi bərabərlik müqayisəsi üç bərabərdir.Mücərrəd/zəif bərabərlik müqayisəsi iki bərabərdir.Object.ES2015-ə daxildir

İki bərabər və üç bərabər arasındakı ən əsas fərq növün və dəyərin müqayisəsidir. Üç bərabər iki dəyərin həm növünü, həm də dəyərini müqayisə edir, iki bərabər isə yalnız dəyər müqayisəsini edərək, dəyərlərin növlərini bərabərləşdirir.İki bərabər müqayisə qiymətlərin növünü dəyişir, üç bərabər isə bu müqayisəni növü dəyişmədən həyata keçirir.Object.is üç bərabərə bənzəyir, lakin NaN ilə -0 ilə +0 arasında olan müstəsna hallarda doğrunu qaytarır.

Null və undefined açar sözlər arasında fərq varmı? 

Bəzi dillərdən fərqli olaraq, JavaScript iki ayrı halı null və undefined  kimi qəbul edir. JavaScript-də undefined  bir dəyişənin elan edildiyini, lakin hələ dəyər təyin edilmədiyini bildirir. . Əgər null təyin dəyəridirsə, dəyişənə dəyərsiz təqdimat təyin edilə bilər. typeof null bizə obyekt qaytarır.

call (), bind () ve apply () arasındakı fərq nədir?

Bəzi hallarda this açar sözün istifadəsi və onun hansı obyektə işarə etdiyini başa düşmək həmişə asan olmaya bilər. Belə hallarda və ya fərqli obyektlərdə funksiyadan istifadə etmək istədiyimiz zaman JavaScript prototip obyekti daxilində call,apply ve bind  funksiyalarından istifadə edə bilərik.

Call ve Apply funksiyaları Funksiya obyektimizin __proto__ obyektindəki iki funksiyadır. Bu funksiyaların funksiyaları eyni olsa da, onların istifadəsində cüzi fərq var.

Call() funksiyası verilmiş açar dəyəri bu (obyekt) və müstəqil olaraq təmin edilmiş arqumentləri olan funksiyanı çağırır. Arqumentlər bir-bir funksiyaya göndərilir. (Məsələn: test(obj,arg1,arg2,arg3))

Apply() funksiyası verilmiş açar dəyəri bu (obyekt) və müstəqil olaraq təmin edilən dəyişənlərlə funksiyanı çağırır. Arqumentlər arqumentlər siyahısı kimi funksiyaya göndərilir. (Nümunə: test(obj,[arg1,arg2,arg3]))

Bind() funksiyası məntiq baxımından çağırış və tətbiq funksiyalarına çox bənzəyir. Lakin istifadə baxımından bu funksiyalardan fərqlidir.

Bind() funksiyası verilmiş obyekt əsasında funksiyanın yeni surətini yaradır. Biz sonradan arqument siyahısı ilə göndərilən obyektə bu nəticədə kopyalama funksiyasından istifadə edə bilərik.

JavaScript-də hansı xəta növləri var?

Üç növ xəta var:

Yükləmə vaxtı xətaları: Veb səhifəni yükləyərkən baş verən səhvlər, məsələn, düzgün olmayan sintaksis xətaları, Yükləmə vaxtı xətaları kimi tanınır və dinamik olaraq xətalar yaradır.

İcra zamanı xətaları: HTML dilində əmrdən istifadə nəticəsində yaranan xətalar.

Məntiqi xətalar: Fərqli əməliyyatla funksiyada yerinə yetirilən pis məntiq səbəbindən baş verən xətalar.

JavaScript-də pop() metodu nədir?

pop() metodu massivin sonuncu elementini silir və massivin strukturunu dəyişir. O, həmçinin massivdən silinmiş elementi qaytarır.

Pop() metodu shift() metoduna bənzəyir.

Onların arasında fərq ondadır ki, shift metodu massivin əvvəlində işləyir.

Pop() metodu verilmiş massivdə sonuncu elementi götürür və onu qaytarır. Sonra onun çağırıldığı massiv dəyişdirilir.

ViewState və SessionState arasındakı fərq nədir?

ViewState-dən yalnız seansdakı səhifə üçün istifadə edərkən; SessionState bütün veb proqram səhifələrində əldə edilə bilən istifadəçiyə məxsus məlumatlara özəldir.

JavaScript’de this nədir?

JavaScript-də funksiyalar obyektlərlə yanaşı xassələrə malikdir. Funksiya çağırıldıqda o, “this” xassəsini alır və bu “this” funksiyanı çağıran obyektin qiymətidir.

This, harada istifadə olunduğundan və funksiyanın necə çağırıldığından asılı olaraq fərqli dəyərə malik olsa da, this həmişə obyektə istinad edir və adətən funksiya və ya metod daxilində istifadə olunur. O, funksiyadan kənarda, yəni qlobal miqyasda da istifadə oluna bilər, lakin nəzərə alınacaq məsələ; Sinifimizi ciddi rejimdə işlədiriksə, "this" undefined olacaq.

 

DOM nədir və JavaScript-də DOM-dan necə istifadə etmək olar?

Document Object Model (DOM) HTML və XML sənədləri üçün nəzərdə tutulmuş proqramlaşdırma interfeysidir. Sənədlərin və ya websaytın quruluşunu, tərzini, məzmununu dəyişdirmək, dinamikləşdirmək üçün istifadə olunur. Beləliklə, proqramlaşdırma dilləri səhifələrə əlavə olunur. Bu o demək deyil ki, DOM proqramlaşdırma dilidir, DOM standart bir modeldir və bu modeldən istifadə edərək HTML və ya XML sənədləri, və ya, bu sənədlərdə işlədilən elementləri (h1, a, table, form və s.) dəyişə, idarə edə bilirik.

JavaScript`in HTML sənədinə qoşulmasından danışanda, JavaScript`də HTML elementlərinə uyğun obyekt yaratmağı nəzərdə tuturuq. Necə ki, HTML`də hər hansı element class, id və ya elementin adına əsasən seçilir, CSS`də bu elementin xarakteristikaları dəyişdirilirdi. Eyni ilə, JavaScript`də də müxtəlif seçim üsulları vardır.

getElementById() — metodu ilə, id`nin adına uyğun olan elementi obyektə mənimsədəcəyik, məsələn,

— myParagraph obyektinə HTML`də id`si “first” olan elementi mənimsət.;

getElementsByName() — metodundan istifadə edərək, elementin adına uyğun elementi əldə edəcəyik;

getElementsByTagName() — metodu isə yazılan tag`a uyğun element qaytaracaqdır. Məsələn, h1, div, p və s.

getElementsByClassName() — elementin əsas atributlarından biri olan class`a əsasən işlədirik;

querySelector() və querySelectorAll() — elementlərin atributlarını CSS`də olduğu kimi (yəni, elementinAdı, .elementinClassı və #elementin id` si) yazmalıyıq. Məsələn,

— myParagraph obyektinə HTML`də id`si “first” olan elementi mənimsət.;

 

Bildiyimiz kimi, İd hər element üçün yalnız 1 dəfə yazılmalıdır. Eyni id`ə malik olan 2 və ya daha artıq element yazmaq mümkün deyil. Amma, eyni class və tag adı ilə istənilən qədər element yaza bilərik. Bu zaman, querySelectorAll() metodunu işlədərək, eyniadlı və ya eyni class adı olan elementləri listlər şəklində bir obyektə mənimsədə bilərik. Qeyd edək ki, querySelector() metodunu class və ya tag`ın adına əsasən işlətdikdə, bu tag və ya class adına malik olan ilk element nəzərdə tutulur.

Elementlərin manipulasiyası

HTML sənədində yazdığımız elementləri seçməyi, obyektlərə mənimsətməyi öyrəndik, indi isə onları idarə etməkdən danışaq.

createElement() — boş element yaradır;

innerHTML — elementə məlumat əlavə edir;

appendChild() — elementi tələb olunan elementin daxilinə əlavə edir;

removeChild() — elementi HTML sənədindən silmək üçün istifadə olunur.

Yuxarıda qeyd olunan metodlardan istifadə etməklə, biz yeni, boş element (tag) yarada, onun içinə bizə lazım olan məlumatları əlavə edə, və bu elementi HTML sənədində lazım olan hissəyə yerləşdirə (yeni elementin parent`ini təyin edə) bilərik. Daha ətraflı desək,

Yuxarıdakı kod nümunəsində internal (HTML sənədi daxilində) JavaScript və HTML görürük. JavaScript koduna nəzər yetirsək, görərik ki, verdiyimiz əmrlər aşağıdakı kimidir:

Yeni, boş "div" yarat;

Yaratdığımız div`in id`si "content" ə bərabər olsun;

Div`in daxilində paraqrafımız var;

Və bu div body tag`ı daxilinə əlavə edilsin.

Aşağıdakı linklərdən JavaScript DOM haqqında daha çox məlumata çata bilərsiniz, qeyd etdiklərim ən çox istifadə və tələb olunan metodlar, əsas anlayışlar idi.

Javascript-də function declaration və expression nədir?

Function expression (Funksional ifadə)

Function expressionun təyin olunması fərqli olduğu kimi, özünü declarationdan fərqli aparır. Expression bizə bir neçə növ istifadə imkanı verir. Gəlin sadə funksiya yazaq.

Ilk onu deyim ki, burada əgər funksiyanı yazmamışdan əvvəl onu çağırsanız, reference error alacaqsınız. Misal kimi yazdığım funksiyanın içinə baxaq. Funksiyanı çağırmağın növlərindən birini də start funksiyası ilə göstərmişəm.

İkinci növ isə method kimi object-in içində istifadədir. Methodlar da function expression sayılırlar.

Expressionla rekursiya etmək üçün anonim funksiyaya mütləq ad vermək lazım olur. Bunu daha geniş rekursiya barədə yazarkən izah edəcəm. Çünki rekursiya özü də bəzən çətin anlaşılan məsələlərdən biri olur.

Nəticə kimi əvvəldə dediyimi, sonda deməli olacam amma bir neçə əlavə ilə. Əgər mentorunuz yoxdursa, senyor developer başınızın üstündə sizə hər addımı izah etmirsə, xırdalıqlara diqqət edərək və bir neçə mənbəni eyni anda oxumaq lazımdır. Scope, callStack, hoisting və s. kimi sözlərlə o qədər tez-tez qarşılaşırdım ki, beynim onun mənasını bilməsə də, tanış söz kimi qəbul edir (özü özünü aldadır) amma əslində anlamırdı. Yaxşı ki, bu tələni tez gördüm və bir daha ora düşmədim.

Function declaration

Növlərdən biri — function declarationdur. Funksiya — açar sözü, funksiyanın mütləq adı, mötərizə içərisində parametrləri və fiqurlu mötərizənin daxilində funksiyanın "bədəni" yazılaraq qurulur.

Bilməliyik ki, funksiyaların təyin olunma formalarının fərqliliyi, onların işləməsində fərqliliklər yaradır. Məsələn function declaration yazıldığı scope("işləmə sərhədləri") tərkibində hoisting deyə bir effektə məruz qalır və scope-un tam yuxarısına qalxır. Hoisting-i ("qalxmanı") baxaraq anlamaq daha asan olar.

Məsələn, burada funksiyanı təyin etməmişdən qabaq onu çağırırıq amma javascript interpretatoru bunu anlayır, çünki funksiya təyin bu cür təyin olunan kimi, scope daxilində onu ən yuxarı qaldırır. İlk növbədə funksiya oxunur və daha sonra onun çağırılması işə düşür. Amma bir məsələ var ki, bu funksiya işləməyəcək. Çünki funksiyanın içində olan message təyin olunmazdan əvvəl çağrılıb və ona görə də ReferenceError: message is not defined səhvini çıxaracaq.