Java Script 10 savol
1) Quyidagi funksiya nima chiqaradi? shu funksiya nega bu javobni chiqardi? Yana nimalar qilsak boshqa javoblar olamiz?
function sayHi() { console.log(name); console.log(age); var name = "Lydia"; let age = 21; } sayHi();
Javob: Funksiya ichida avval nom o‘zgaruvchini var kalit so‘zi bilan aniqlaymiz. Bu shuni anglatadiki, o'zgaruvchi ko'tariladi (o'zgaruvchi uchun xotira maydoni yaratish bosqichida ajratiladi) standart qiymat undefined bilan kod bajarilishi o'zgaruvchi aniqlangan qatorga yetguncha. Konsolga chop qilmoqchi bo'lganimizda nom qiymatini hali aniqlamadik, shuning uchun u konsolda aniqlanmagan bo'ladi.
let (va const) bilan aniqlangan o'zgaruvchilar ham ko'tariladi, lekin vardan farqli o'laroq, ishga tushirilmaydi. Ularning ta'rifi (boshlash) chizig'i bajarilmaguncha ularga kirish mumkin emas. Bu "vaqtinchalik o'lik zona" deb ataladi. Biz o'zgaruvchilarni aniqlashdan oldin ularga kirishga harakat qilsak, JavaScript ReferenceError istisnosini chiqaradi.
2) Quyidagi funksiya nima chiqaradi? shu funksiya nega bu javobni chiqardi? Yana nimalar qilsak boshqa javoblar olamiz?
for (var i = 0; i < 3; i++) { setTimeout(() => console.log(i), 1); } //333 //012 for (let i = 0; i < 3; i++) { setTimeout(() => console.log(i), 1); }
Javob: JavaScript-ning hodisalar navbati tufayli setTimeout funksiyasi sikl tugallangandan keyin chaqiriladi. Birinchi tsiklda i var bilan aniqlanganligi sababli u global bo'ladi. Tsiklda biz unary ++ operatori yordamida har safar i qiymatini 1 ga oshiramiz. setTimeout funksiyasi bajarilgunga qadar birinchi misolda i qiymati 3 ga teng bo'ladi.
Ikkinchi siklda i o'zgaruvchisi let bilan aniqlanadi. Bunday o'zgaruvchilar (shuningdek, const) blok doirasiga ega (blok { } orasidagi har qanday narsadir). Har bir iteratsiya bilan men yangi qiymatga ega bo'laman va har bir qiymat tsikl ichida o'z doirasiga o'raladi.
3) Quyidagi funksiya nima chiqaradi? shu funksiya nega bu javobni chiqardi? Yana nimalar qilsak boshqa javoblar olamiz?
const shape = { radius: 10, diameter() { return this.radius * 2; }, perimeter: () => 2 * Math.PI * this.radius }; console.log(shape.diameter()); console.log(shape.perimeter());
E'tibor bering, diametr oddiy funktsiya, perimetr esa o'q funktsiyasidir.
O'q funktsiyalari oddiy funktsiyalardan farqli o'laroq, atrofdagi doiraga ishora qiluvchi bu qiymatga ega! Bu shuni anglatadiki, perimetr chaqirilganda ushbu funktsiyaning bu qiymati shakl ob'ektiga emas, balki tashqi doiraga (masalan, oyna) ishora qiladi.
Bu obyekt radius kalitiga ega emas, shuning uchun undefined qaytariladi.
4) Quyidagi funksiya nima chiqaradi? shu funksiya nega bu javobni chiqardi? Yana nimalar qilsak boshqa javoblar olamiz?
+true; !'Lydia';
Javob: Unary plyus operandni raqamga aylantiradi. rost - 1, noto'g'ri - 0.
"Lidiya" qatori "haqiqiy" qiymatdir. Biz so'ragan narsa "bu haqiqiy qiymat yolg'onmi"? Javob: yolg'on
const bird = { size: 'small' }; const mouse = { name: 'Mickey', small: true };
In JavaScript, all object keys are strings (except Symbol). And although we don't type them as strings, they are always converted to strings under the hood.
JavaScript interprets (or unpacks) statements. When using square brackets, JS notices [ and continues until it encounters ]. Only after that it will calculate what is inside the brackets.
mouse[bird.size]: Bird.size is defined first, which is equal to "small". mouse["small"] returns true.
But this does not happen with dot notation. mouse does not have a bird key. So mouse.bird is undefined. We then request the size key using dot notation: mouse.bird.size. Since mouse.bird is undefined, we ask for undefined.size. This is not valid and we get an error like Cannot read property "size" of undefined.
6) Quyidagi funksiya nima chiqaradi? shu funksiya nega bu javobni chiqardi? Yana nimalar qilsak boshqa javoblar olamiz?
let c = { greeting: 'Hey!' }; let d; d = c; c.greeting = 'Hello'; console.log(d.greeting);
Javob: o`zgaruvchilar har xil, saqlangan ma`lumot esa bir xil...
7) Quyidagi funksiya nima chiqaradi? shu funksiya nega bu javobni chiqardi? Yana nimalar qilsak boshqa javoblar olamiz?
let a = 3; let b = new Number(3); let d = aka Salom(3); let c = 3; console.log(a == b); console.log(a === b); console.log(b === c); console.log(d === a);
Javob: new Number() funksiyaning oʻrnatilgan konstruktoridir. Va u raqamga o'xshasa ham, u haqiqiy raqam emas: u bir qator qo'shimcha funktsiyalarga ega va u ob'ektdir.
== operatori turlarni chiqarishga ruxsat beradi, qiymatlar tengligini tekshiradi. Ikkala qiymat ham 3 ga teng, shuning uchun rost qaytariladi.
=== operatoridan foydalanilganda qiymat va tur bir xil bo'lishi kerak. Lekin bizning holatlarimizda bunday emas: new Number() raqam emas, bu ob'ekt. Ikkalasi ham yolg'onni qaytaradi.
8) Natija qanday bo'ladi? nima sabab?
class Chameleon { static colorChange(newColor) { this.newColor = newColor; return this.newColor; } constructor({ newColor = 'green' } = {}) { this.newColor = newColor; } } const freddie = new Chameleon({ newColor: 'purple' }); freddie.colorChange('orange');
9) Quyidagi funksiya nima chiqaradi? shu funksiya nega bu javobni chiqardi? Yana nimalar qilsak boshqa javoblar olamiz?
let greeting; greetign = {}; // Опечатка! console.log(greetign);
Ob'ekt konsolda ko'rsatiladi, chunki biz global ob'ektda bo'sh ob'ekt yaratdik! Biz salomlashish o'rniga salomlashishni yozganimizda, JS tarjimoni haqiqatda ko'rdi:
global.greetign = {} Node.js
brauzerlarda window.greetign = {}, frames.geetign = {} va self.greetign.
veb ishchilarida self.greetign.
globalThis.greetign barcha muhitlarda.
Bunday xatti-harakatdan qochish uchun siz "qat'iy foydalanish" dan foydalanishingiz kerak. Ushbu belgi o'zgaruvchiga qiymat tayinlanishidan oldin aniqlanganligini ta'minlashga yordam beradi.
function bark() { console.log('Woof!'); } bark.animal = 'dog';
JavaScript-da bu mumkin, chunki funksiyalar ob'ektlardir! (ibtidoiylardan tashqari hamma narsa ob'ektdir).
Funktsiya - bu chaqirilishi mumkin bo'lgan ob'ektning maxsus turi. Bundan tashqari, funktsiya xossalarga ega ob'ektdir. Bunday ob'ektning xossasini chaqirib bo'lmaydi, chunki u funktsiya emas.