https://github.com/muhammadaziz01-dev/javascript-questions
https://github.com/muhammadaziz01-dev/javascript-questions
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/muhammadaziz01-dev/javascript-questions
- Owner: muhammadaziz01-dev
- Created: 2024-12-10T07:00:23.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-12-16T04:59:13.000Z (5 months ago)
- Last Synced: 2025-02-05T13:51:22.739Z (3 months ago)
- Size: 6.84 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
![]()
JavaScript Savollari
Oddiydan murakkabgacha: JavaScript bo‘yicha qanchalik yaxshi bilimga ega ekanligingizni tekshirib ko‘ring, bilimlaringizni bir oz yangilang yoki kodlash bo‘yicha intervyularga tayyorlaning!
Ushbu repoda muntazam ravishda yangi savollar qo'shib boraman.
Bu faqat qiziqarli maqsadlar uchun, omad tilayman!---
###### 1. Natija qnday chiqadi
```javascript
function sayHi() {
console.log(name);
console.log(age);
var name = 'Aziz';
let age = 22;
}sayHi();
```- A: `Aziz` va `undefined`
- B: `Aziz` va `ReferenceError`
- C: `ReferenceError` va `22`
- D: `undefined` va `ReferenceError`Javob
#### Javob: D
Funksiya ichida name o‘zgaruvchisi `var` kalit so‘zi yordamida e'lon qilingan. `var` bilan e'lon qilingan o‘zgaruvchilar avvaldan xotirada`undefined` qiymat bilan joylashtiriladi `(hoisting)`. Shuning uchun, o‘zgaruvchiga qiymat berilguncha, uning qiymati `undefined` bo‘ladi.
`let` yoki `const` bilan e'lon qilingan o‘zgaruvchilar ham xotirada joylashtiriladi, ammo ular `temporal dead zone` (ma'lum vaqt davomida o‘zgaruvchidan foydalanib bo‘lmaydigan holat) ichida bo‘ladi. Ularni qiymat bilan boshlashdan oldin ishlatishga urinilsa, `ReferenceError` xatosi chiqadi.
---
###### 2. Natija qnday chiqadi
```javascript
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1);
}for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1);
}
```- A: `0 1 2` va `0 1 2`
- B: `0 1 2` va `3 3 3`
- C: `3 3 3` va `0 1 2`Javob
#### Javob: C
`setTimeout` funksiyasi orqali bajariladigan kod asosiy sikldan keyin ishga tushadi. Birinchi siklda `i` o‘zgaruvchisi `var` yordamida e'lon qilingan va bu o‘zgaruvchi global bo‘ladi. Sikl tugaganda, `i` qiymati `3` bo‘ladi va hamma chaqiruvlar bir xil qiymatni ko‘rsatadi (`3`).
Ikkinchi siklda `let` ishlatilgan, bu esa o‘zgaruvchini blok doirasida cheklaydi. Har bir iteratsiya uchun yangi `i` qiymati yaratiladi, va har bir `setTimeout` o‘zining alohida qiymatini ko‘rsatadi (`0, 1, 2`).
---
###### 3. Natija qnday chiqadi
```javascript
const shape = {
radius: 10,
diameter() {
return this.radius * 2;
},
perimeter: () => 2 * Math.PI * this.radius,
};console.log(shape.diameter());
console.log(shape.perimeter());
```- A: `20` va `62.83185307179586`
- B: `20` va `NaN`
- C: `20` va `63`
- D: `NaN` va `63`Javob
#### Javob: B
`diameter` oddiy funksiya bo‘lib, undagi `this` kalit so‘zi `shape` obyektini ko‘rsatadi. Natijada, `this.radius` `10` bo‘lib, `diameter()` natijasi `20` chiqadi.
`perimeter` esa arrow function bo‘lib, undagi `this` tashqi (global) doirani ko‘rsatadi. Global doirada `radius` degan o‘zgaruvchi yo‘q, shuning uchun `this.radius` qiymati `undefined`, natija esa `NaN` bo‘ladi.
---
###### 4. Natija qnday chiqadi
```javascript
+true;
!'Aziz';
```- A: `1` va `false`
- B: `false` va `NaN`
- C: `false` va `false`Javob
#### Javob: A
`+true` - bu `true` qiymatini raqamga o‘zgartiradi, va bu `1` bo‘ladi.
`!'Aziz'` - bu `Aziz` qatorini mantiqiy qiymatga o‘zgartiradi (truthy), va keyin inkor qiladi. Truthy qiymatning inkori `false`.---
###### 5. Qaysi biri to‘g‘ri?
```javascript
const bird = {
size: 'small',
};const mouse = {
name: 'Mickey',
small: true,
};
```- A: `mouse.bird.size` noto‘g‘ri
- B: `mouse[bird.size]` noto‘g‘ri
- C: `mouse[bird["size"]]` noto‘g‘ri
- D: Hammasi to'griJavob
#### Javob: A
Obyektlar ichidagi kalitlar qator ko‘rinishida bo‘ladi. `mouse[bird.size]` birinchi `bird.size` qiymatini (`small`) oladi va `mouse["small"]` ga aylantiradi, natija `true`.
Lekin `mouse.bird.size ishlamaydi` , chunki `mouse` obyektida `bird` degan kalit yo‘q. Natijada `Cannot read property "size" of undefined` xatosi chiqadi.
---
###### 6. Natija qnday chiqadi
```javascript
let c = { greeting: 'Hey!' };
let d;d = c;
c.greeting = 'Hello';
console.log(d.greeting);
```- A: `Hello`
- B: `Hey!`
- C: `undefined`
- D: `ReferenceError`
- E: `TypeError`Javob
#### Javob: A
JavaScriptda obyektlar `reference` orqali o‘zaro bog‘lanadi. `d = c` deganda, `d` va `c` bir xil obyektga ishora qiladi. Shuning uchun, `c.greeting`ni o‘zgartirish, `d.greeting` qiymatini ham o‘zgartiradi.
Bitta ob'ektni o'zgartirsangiz, ularning hammasini o'zgartirasiz.
---
###### 7. Natija qnday chiqadi
```javascript
let a = 3;
let b = new Number(3);
let c = 3;console.log(a == b);
console.log(a === b);
console.log(b === c);
```- A: `true` `false` `true`
- B: `false` `false` `true`
- C: `true` `false` `false`
- D: `false` `true` `true`Javob
#### Javob: C
`new Number()` obyekt yaratadi.
- `a == b`: qiymatlar solishtiriladi (`3 == 3`), natija `true`.
- `a === b`: qiymat va tur solishtiriladi (`number !== object`), natija `false`.
- `b === c`: `b` obyekt bo‘lgani uchun, natija `false`.---
###### 8. Natija qnday chiqadi
```javascript
class Chameleon {
static colorChange(newColor) {
this.newColor = newColor;
return this.newColor;
}constructor({ newColor = 'green' } = {}) {
this.newColor = newColor;
}
}const freddie = new Chameleon({ newColor: 'purple' });
console.log(freddie.colorChange('orange'));
```- A: `orange`
- B: `purple`
- C: `green`
- D: `TypeError`Javob
#### Javob: D
`colorChange` statik funksiya. Statik funksiyalar faqat klass nomi orqali chaqiriladi (`Chameleon.colorChange`). Instansiya (`freddie`) orqali chaqirilganda, `TypeError` xatosi yuzaga keladi.
---
###### 9. Natija qnday chiqadi
```javascript
let greeting;
greetign = {}; // Typo!
console.log(greetign);
```- A: `{}`
- B: `ReferenceError: greetign is not defined`
- C: `undefined`Javob
#### Javob: A
Xato sababli `greetign` o‘zgaruvchisi avtomatik ravishda global obyekt sifatida yaratiladi (brauzerda `window.greetign`). `"use strict"` rejimida bu xatoni oldini olish mumkin.
---