JavaScriptda Scope Chain
JavaScriptda Scope Chain tushunchasi bu - JavaScript engine ni o'zgaruvchilar va fungsiyalarni scopelar ichidan qidirib topish mexanizmidir.
Scope Chain o'zgaruvchi e'lon qilingan scopedan boshlab global scope ga qarab qidirib boradi. Buni yaxshiroq tushunish uchun quyidagi misolni ko'rib o'tamiz.
const y = 20;
function function1() {
const x = 100;
const function2 = function () {
console.log(x); // x o'zgaruvchisi dastavval function2 ni scopidan qidiriladi topolmagach o'zidan bitta yuqoridagi scopega chiqadi va x ni o'qib oladi x = 100
};
var function3 = function () {
console.log(y); // y o'zgaruvchisi dastavval function3 ni scopidan qidiriladi topolmagach o'zidan bitta yuqoridagi function1 ni scopega chiqadi, u yerdan ham topolmagach global scopega chiqadi va y ni tanib oladi y = 20
};
function2();
function3();
}
function1();
#javascript#interview_questions
☑️@valisher_botirov
const obj = {
age : 21,
showAge(){
console.log(this.age)
}
}
const obj2 = {age:18}
const getAge = obj.showAge
console.log(getAge())
console.log(getAge.call(obj2))
#interview_questions#javascript
const a = 0
const b = false
console.log(a == b)
console.log(a === b)
#interview_questions#javascript
function test(){
console.log("1" + 1);
console.log("A" - 1);
console.log(2 + "-2" + "2");
console.log("Hello" - "World" + 78);
console.log("Hello"+ "78");
}
test()
#interview_questions#javascript
let x = {}
let y = { age: 21 }
let z = { ag2: 20 }
x[y] = { age: 19 }
x[z] = { age: 18 }
console.log(x[y].age)
#interview_questions#javascript
function question(){
setTimeout(()=> console.log(1),2000);
console.log(2);
setTimeout(()=> console.log(3),0);
console.log(4);
};
question()
#interview_questions#javascript
Immediately invoked function expressions (IIFE)
JavaScriptda kod ishga tushgan vaqti e'lon qilingan joyida ishlaydigan fungsiyalarga Immediately invoked function deyiladi.
Example:
(function(){
console.log("Hello world!")
})() //Hello world!
((a,b)=>{
console.log(a + b)
})(3,2) //5
#javascript#interview_questions
☑️@valisherbotirov
function func1(){
setTimeout(()=>{
console.log(x);
console.log(y);
},3000);
var x = 2;
let y = 12;
}
func1();
kod natijani nima bo'ladi?
#javascript#interview_questions
👉@ummat_uchun_dasturlash
Bind()
Bind ni call va apply dan farqi funksiyani ishlatilgan joyida chaqirmasdan funksiyani this qiymatini biz berib yuborgan objectga o'zgartirib yangi funksiya yaratib qaytaradi. Uni biror o'zgaruvchiga tenglab olib ishlatishimiz mumkin bo'ladi.
function myFunc(){
console.log(this.age)
}
const obj = {
age:21
}
const newFunc = myFunc.bind(obj)
newFunc()
Bind da objectga qo'shib argument berib yuborish call ga o'xshash bo'ladi
bind(obj, arg1, arg2, ...)
#javascript#docs#interview_questions
☑️@valisherbotirov
Apply()
Apply methodi ham Call() bilan deyarli bir xil ishlaydi. Call() dan farqi funksiyaga argument berib yuborayotgan vaqtimiz argumentlarni array ko'rinishida beramiz.
function myFunc(args){
console.log(this.age + " " + args)
}
const obj = {
age:21
}
myFunc.apply(obj,["this is argument"])
```
call(obj, arg1, arg2, ...)
apply(obj, [arg1,arg2,...])`
#javascript#docs#interview_questions
☑️@valisherbotirov
JavaScriptda Call() , Apply() va Bind() methodlari.
Call() - JavaScriptda funksiyani chaqirish paytida this qiymatini o'zgartirish uchun ishlatiladi. Bu method orqali berib yuborgan objectimizni contextida shu funksiyani chaqirib beradi va funksiya ichida ishlatilgan this ni berib yuborilgan objectimizga tenglashtirib beradi.
Misollar orqali ko'ramiz :
function myFunc(){
console.log(this)
}
myFunc()
Bizda muFunc degan funksiyamiz bor va bu bizga xozir global Window objectini qaytaradi. Chunki fungsiya global scopeda chaqirilgan.
Endi funksiyaga call methodi orqali birorta object berib ko'ramiz.
function myFunc(){
console.log(this)
}
const obj = {
age:21
}
myFunc.call(obj)
Bu holda funksiyamiz bizga obj deb nomlangan objectimizni qaytaradi. Sababi call() methodi funksiyani obj objectini contextida chaqirib beryabdi va natijada funksiyani this qiymati bizning obj nomli objectimizga teng bo'lib qolyabdi.
Call() orqali argument berib yuborish
Call() bilan funksiyani chaqirgan vaqtimiz objectga qo'shib o'zimizda ixtiyoriy argument ham berib yuborishimiz mumkin.
function myFunc(args){
console.log(this.age + " " + args)
}
const obj = {
age:21
}
myFunc.call(obj,"this is argument")
#javascript#docs#interview_questions
☑️@valisherbotirov
JavaScript fungsiyalarda this kalit so'zidan foydalanish
Fungsiyaning ichida this kalit so'zidan foydalanganimizda this qiymati fungsiya qayerda chaqirilayotganiga bog'liq bo'ladi.
Misollar yordamida ko'rib o'tamiz!
function showThis (){
console.log(this)
}
showThis()
ushbu misolda this bizga JavaScriptdagi Window objectini qaytaradi. Sababi biz fungsiyani global scope ichida chaqiryabmiz.
const person = {
name : "Valisher",
fetchName:function(){
console.log(this.name) // Valisher
}
}
person.fetchName()
bu misolda esa this bizga person objectini qaytaradi. Sababi fetchName fungsiyasi person objectini xossasi bo'lgani uchun fungsiyani chaqirgan vaqtimiz this person objectini qaytaradi.
const person = {
name : "Valisher",
fetchName:function(){
console.log(this.name)
}
}
const getName = person.fetchName
const person2 = {
name : "John",
getName
}
person2.getName() // John
ushbu misolda esa this kalit so'zi person2 objectini qaytaradi. Sababi biz person1 objectidagi fetchName fungiyasini getName o'zgaruvchisiga tenglab olib uni esa person2 objectiga property sifatida beryabmiz. Natijada this bizga person2 objectini qaytarib beryabdi.
#javascript#docs#interview_questions
☑️@valisherbotirov