JavaScript Interview Savollari va Javoblari
So'nggi yangilanish: payshanba, 19-dekabr, 2024
1. JavaScript Nima?
JavaScript - bu dinamik funksionallikka ega interaktiv veb-sahifalar va onlayn ilovalar yaratishga imkon beruvchi yuqori darajadagi, interpretatsiyalanuvchi dasturlash tili. Keng tarqalgan "universal til" deb ham ataladi, JavaScript asosan dasturchilar tomonidan front-end va back-end ishlarida qo'llaniladi.
2. JavaScript-dagi Turlar Qanday?
JavaScript-da olti primitive ma'lumotlar turi mavjud:
- Raqam (Number)
- Satr (String)
- Mantiqiy (Boolean)
- Nol (Null)
- Aniqlanmagan (Undefined)
- Belgi (Symbol)
Shuningdek, ikki murakkab ma'lumotlar turi ham bor:
- Ob'ekt (Object)
- Massiv (Array)
3. JavaScript-da Hoisting Nima?
Hoisting - bu o'zining sohasining yuqorisiga e'lon qilinganlarni ko'chirish jarayoni. Bu degani, o'zgaruvchilar va funksiyalar ularning e'lonidan oldin ham ishlatilishi mumkin, agar ular funksiyada ishlatilishidan oldin e'lon qilingan bo'lsa.
Misol:
greeting = "Salom, dunyo!";
function sayHello() {
console.log(greeting);
}
sayHello(); // Chiqadi: "Salom, dunyo!"
4. null va undefined o'rtasidagi farq nima?
null
- bu hech qanday qiymat yoki bo'sh qiymatni bildiruvchi qiymat, undefined
esa e'lon qilingan, lekin qiymati berilmagan o'zgaruvchi.
Misol:
let x;
console.log(x); // Chiqadi: undefined
let y = null;
console.log(y); // Chiqadi: null
5. JavaScript-da "this" kalit so'zining maqsadi nima?
this
kalit so'zi joriy bajarilayotgan funksiya yoki metodning ob'ektini bildiradi. U ob'ekt xususiyatlariga va metodlariga shu ob'ekt konteksti ichida kirish imkonini beradi.
Misol:
const odam = {
ism: "John",
yosh: 30,
salomlash() {
console.log(`Salom, mening ismim ${this.ism}`);
},
};
odam.salomlash(); // Chiqadi: "Salom, mening ismim John"
6. JavaScript-da "var" va "let" Kalit So'zlari O'rtasidagi Farq Nima?
var
va let
kalit so'zlari ikkalasi ham JavaScript-da o'zgaruvchilarni e'lon qilish uchun ishlatiladi. Biroq, ularning o'rtasida bir qancha asosiy farqlar mavjud.
var
kalit so'zi global o'zgaruvchini e'lon qiladi, ya'ni bu o'zgaruvchiga kodning istalgan joyidan kirish mumkin. let
kalit so'zi lokal o'zgaruvchini e'lon qiladi, ya'ni bu o'zgaruvchi faqat u e'lon qilingan kod bloki ichida mavjud bo'ladi.
Asosiy Farqlar:
-
Scope (Qamrov)
var
: Global yoki funksiya scope'idalet
: Blok scope'ida
-
Qayta E'lon Qilish
var
: Bir xil nomli o'zgaruvchini qayta e'lon qilish mumkinlet
: Bir xil nomli o'zgaruvchini qayta e'lon qilish xatolikka olib keladi
-
Hoisting (Ko'tarish)
var
: Hoisting bilanlet
: Hoisting bo'lmaydi
Misol:
// var bilan
var x = 10;
var x = 20; // Ruxsat etilgan
// let bilan
let y = 10;
let y = 20; // Xatolik beradi
7. JavaScript-da Closures Nima?
Closures (closureFn
) - bu tashqi funksiyaning o'zgaruvchilariga hatto tashqi funksiya bajarilganidan keyin ham kirish imkoniyatiga ega bo'lgan funksiyalardir. Ular o'zlari yaratilgan muhitni "eslab qoladi".
Closure Misoli:
function tashqiFunction() {
let yashirin = "Men yashirin o'zgaruvchiman";
function ichkiFunction() {
console.log(yashirin);
}
return ichkiFunction;
}
const closureFn = tashqiFunction();
closureFn(); // Chiqadi: "Men yashirin o'zgaruvchiman"
Ushbu misolda:
ichkiFunction
tashqiFunction
ichida yaratilgan- Tashqi funksiya bajarilgandan keyin ham
ichkiFunction
yashirin
o'zgaruvchisiga kirish huquqini saqlab qoladi - Bu
ichkiFunction
closure hosil qiladi
I'll translate this text about implicit type coercion in JavaScript to Uzbek:
8. JavaScript'da Implicit Type Coercion Nima?
Implicit type coercion (implicit type coercion) JavaScript'da qiymatni bir turdan boshqa turga avtomatik ravishda aylantirish konseptidir. JavaScript'da bu aylantirish odatda prioritet tartibda amalga oshiriladi, ya'ni birinchi bo'lib satrlar, keyin raqamlar va oxirida mantiqiy qiymatlar (boolean) keladi. Agar siz raqamni satrga qo'shmoqchi bo'lsangiz, JavaScript raqamni satrga majburiy aylantiradi, chunki satrlar turni aylantirish prioritetida eng yuqori o'rinda turadi.
Misol uchun, 5
raqamini '10'
satri bilan qo'shmoqchi bo'lsangiz, natija '510'
satri bo'ladi. Bu JavaScript turni aylantirish prioriteti bo'yicha 5
raqamini satrga aylantiradi va keyin '10'
satri bilan birlashtiradi.
Implicit Type Coercion Misoli:
console.log(5 + '10'); // Natija: '510'
Bu misolda, JavaScript 5
raqamini satrga aylantiradi va '10'
satri bilan birga qo'shadi, natijada '510'
satri hosil bo'ladi.
9. JavaScript'da Prototip Tushunchasi
Prototiplar JavaScript'da merosxo'rlik (inheritance
) uchun ishlatadigan mexanizm hisobanadi. JavaScript'da har bir ob'ekt prototipga ega bo'lib, u ob'ekt tomonidan foydalanilishi mumkin bo'lgan xossalar va metodlarni ta'minlaydi.
Prototiplar JavaScript'ning ob'ektga yo'naltirilgan dasturlash tizimining asosiy tushunchalaridan biridir. Ular ob'ektlar o'rtasida xossalar va metodlarni baham ko'rishning samarali usulini ta'minlaydi. Har bir ob'ekt boshqa ob'ektdan xossalar va metodlarni meros qilib olishi mumkin, bu esa kodning qaytadan foydalanilishi va tuzilishini osonlashtiradi.
Prototiplar orqali, bir ob'ekt boshqa ob'ektning xossalari va metodlarini meros qilib olishi mumkin bo'ladi. Agar ob'ekt o'zining prototipida ma'lum bir xossa yoki metodni topzmasa, JavaScript avtomatik ravishda uning prototipining prototipini izlaydi. Bu jarayon ob'ekt zanjiri oxirigacha davom etadi.
Misol:
function Person(ism) {
this.ism = ism;
}
Person.prototype.salomlash = function() {
console.log(`Salom, mening ismim ${this.ism}`);
}
const shaxs = new Person("John");
shaxs.salomlash(); // Chiqadi: "Salom, mening ismim John"
Ushbu misolda:
Person
funksiyasi konstruktor funksiya bo'lib,ism
xossasiga ega ob'ektlar yaratadi.salomlash
metodiPerson.prototype
ob'ektiga qo'shiladi, buPerson
konstruktori barcha nusxalari tomonidan bir-biriga ulashiladi.shaxs
ob'ektiPerson
konstruktori yordamida yaratiladi vaism
xossasiga ega.
10. JavaScript'da Event Bubbling va Capturing Nima?
Event Bubbling va Event Capturing DOM elementlarida amalga oshiriladigan voqealar (events) tizimi bo'yicha voqealar tizimini tushunish uchun ishlatiladigan konseptsiyalardir. Event Bubbling va Event Capturing DOM elementlarini qanday qilib voqealar tizimiga qo'shish vaqti va tartibini belgilaydi. Event Bubbling voqealar tizimini pastdan yuqoriga yo'naltiradi, ya'ni voqea DOM elementidan boshlanib, uning ota-ona elementlariga yo'naltiriladi. Event Capturing esa voqealar tizimini yuqoridan pastga yo'naltiradi, ya'ni voqea DOM elementidan boshlanib, uning ota-ona elementlariga yo'naltiriladi.
Misol:
<div id="parent">
<div id="child">Bola</div>
</div>
const parent = document.getElementById('parent');
const child = document.getElementById('child');
parent.addEventListener('click', () => {
console.log('Ota elementga kiritildi');
}, true);
child.addEventListener('click', () => {
console.log('Bola elementga kiritildi');
}, true);
Ushbu misolda:
parent
vachild
elementlari DOM elementlarini ifodalaydi.parent
elementigaclick
voqea qo'shiladi vatrue
parametri bilan, bu Event Capturing ni belgilaydi.child
elementigaclick
voqea qo'shiladi vatrue
parametri bilan, bu Event Capturing ni belgilaydi.- Agar foydalanuvchi
child
elementiga bosinga, konsolga quyidagi chiqadi:Bu esa Event Capturing jarayonini ko'rsatadi.Bola elementga kiritildi Ota elementga kiritildi
11. JavaScript'da "use strict" Nima?
use strict
JavaScript'da kodni "strict" rejimda ishlatish uchun ishlatiladigan xususiyatdir. Ushbu xususiyatni ishlatish orqali, JavaScript kodining xatoliklarini aniqlash va ularni to'g'rilash osonlashadi. use strict
xususiyati JavaScript kodini "strict" rejimda ishlatish uchun eng yaxshi usuldir, chunki bu xususiyat kodni xatoliklardan himoya qiladi va kodni to'g'riroq va ishonchli qiladi.
Misol:
'use strict';
x = 3.14; // Xatolik: x e'lon qilinmagan
Ushbu misolda, use strict
xususiyati ishlatilgan, lekin x
o'zgaruvchisi e'lon qilinmaganligi sababli xatolik chiqadi. use strict
xususiyati ishlatilmasa, xatolik chiqmaydi va x
o'zgaruvchisi global o'zgaruvchi sifatida e'lon qilinadi.
12. JavaScript'da "async" va "defer" Skriptlar O'rtasidagi Farq Nima?
async
va defer
skriptlar JavaScript fayllarini HTML sahifasiga qanday qilib qo'shishni belgilash uchun ishlatiladi. Ular skriptni sahifaga qanday qilib yuklashni va ishga tushirish tartibini belgilaydi. Farq ularning ishlash tartibi va sahifaning yuklanish jarayonida joylashganligi bilan bog'liq. async
skriptlar sahifaning yuklanish jarayonida yuklanadi, lekin defer
skriptlar sahifaning yuklanish jarayonida yuklanmaydi.
Asosiy Farqlar:
async
skriptlar sahifaning yuklanish jarayonida yuklanadi, lekindefer
skriptlar sahifaning yuklanish jarayonida yuklanmaydi.async
skriptlar sahifaga yuklanish jarayonida ishga tushiriladi, lekindefer
skriptlar sahifaning yuklanish jarayonida ishga tushiriladi.async
skriptlar sahifaga yuklanish jarayonida yuklanish tartibini kutmaydi, lekindefer
skriptlar sahifaning yuklanish jarayonida yuklanish tartibini kutadi.
13. JavaScript'da Cookies Nima?
JavaScript'da cookies brauzer va veb-sayt o'rtasida ma'lumot almashish uchun ishlatiladigan ma'lumotlar turi. Ular brauzer tomonidan saqlanadigan va veb-saytning foydalanuvchilari tomonidan o'zgartiriladigan ma'lumotlar turi. Cookies'lar veb-saytlar foydalanuvchilari tomonidan saqlangan ma'lumotlarni saqlash uchun ishlatiladi, masalan, foydalanuvchi tomonidan tanlangan til, sahifalarga kirishlar, foydalanuvchi tomonidan tanlangan sozlamalar va boshqalar.
14. JavaScript'da Local Storage Nima?
Local Storage brauzerda ma'lumotlarni saqlash uchun ishlatiladigan brauzer API'sidir. Ushbu API brauzerda ma'lumotlarni saqlash uchun o'zgaruvchilarni ishlatadi va ularni brauzer yopilgandan keyin ham saqlaydi. Local Storage ma'lumotlarni brauzerda saqlash uchun qulay usuldir va ular brauzer yopilgandan keyin ham saqlanadi. Ular brauzer yopilgandan keyin ham saqlanadi va brauzer yopilgandan keyin ham saqlanadi.
15. Event Loop haqida nimalarni bilasiz?
Event Loop - JavaScript'da asinxron dasturlash uchun asosiy mexanizmdir. U brauzerda ishlaydigan asinxron operatsiyalarni boshqarish uchun ishlatiladi. Event Loop doimiy ravishda Call Stack va Callback Queue o'rtasida o'zaro ta'sir qiladi. U Call Stack'dan vazifalarni olib, ularni bajaradi va natijasini Callback Queue'ga qaytaradi. Callback Queue'dagi vazifalar esa Call Stack bo'sh bo'lganda Call Stack'ga o'tkaziladi va bajariladi. Ushbu jarayon doimiy ravishda davom etadi va asinxron operatsiyalar bajariladi.
Event Loop qo'llanma Event Loop'ning ishlashi, uning komponentlari va JavaScript dasturlashdagi ahamiyatini tushuntirishga qaratilgan.