Sobes.tech
Junior

JavaScriptda klassik funktsiya va chiziqli funktsiya o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Asosiy farq ular qanday ishlashiga bogʻliq this.

Anʼanaviy funksiya oʻz this ga ega boʻlib, u chaqirilgan kontekstga (qanday chaqirilganiga) bogʻliq boʻladi.

Ok funksiyasi oʻz this ga ega emas. U, tanlangan muhitdan, leksik ravishda, this meros oladi.

Boshqa farqlar:

  • arguments obʼekti: Anʼanaviy funksiyalar arguments obʼektiga kirish huquqiga ega, ok funksiyalar esa — yoʻq (lekin rest parametrlaridan foydalanish mumkin).
  • Konstruktorlar: Anʼanaviy funksiyalar new operatori bilan konstruktor sifatida ishlatilishi mumkin. Ok funksiyalari — mumkin emas.
  • prototype xususiyati: Anʼanaviy funksiyalarda prototype xususiyati mavjud. Ok funksiyalarida — yoʻq.

this bilan ishlash misoli:

// Anʼanaviy funksiya misoli
const obj = {
  name: 'Obyekt',
  greet: function() {
    console.log(this.name); // this, obj ga ishora qiladi
  }
};

obj.greet(); // Chiqishi: Obyekt

const greetFunc = obj.greet;
greetFunc(); // Chiqishi: undefined (yoki Browserda Window) - this, kontekstni yoʻqotadi
// Ok funksiyasi misoli
const objArrow = {
  name: 'Ok bilan obyekt',
  greet: () => {
    console.log(this.name); // this, tashqi kontekstni meros oladi (bu holatda global yoki Window)
  }
};

objArrow.greet(); // Chiqishi: undefined (yoki brauzerda oynaning nomi, agar name global boʻlsa)

const greetArrowFunc = objArrow.greet;
greetArrowFunc(); // Chiqishi: undefined (yoki brauzerda oynaning nomi) - this, oʻzgarmaydi