Sobes.tech
Junior

JavaScriptте ок ишарелүү функциялар менен жөнөкөй функциялардын айырмасы эмне?

sobes.tech AI

AIден жооп

  1. Синтаксис:
    • Жалпы функция: function myFunction() { ... }
    • Жебе функция: () => { ... } же param => { ... }
  2. this контекст:
    • Жалпы функция: this аныкталат чакыруу контекстинен.
    • Жебе функция: this лексикалык түрдө мурас алат айланасынан (өзүнүн thisи жок).
  3. Куруучулар:
    • Жалпы функция: Куруучу катары колдонулушу мүмкүн (new myFunction()).
    • Жебе функция: Куруучу катары колдонулушу мүмкүн эмес.
  4. arguments объекти:
    • Жалпы функция: Өзүнүн arguments объекти бар.
    • Жебе функция: Өзүнүн arguments жок, жеткиликтүүлүк үчүн rest-параметрлер (...args) колдонулат.
  5. Аты бар функциялар:
    • Жалпы функция: Аты бар болушу мүмкүн (function myFunction() { ... }).
    • Жебе функция: Анонимдүү, өзгөрмө аркылуу берилет (const myFunction = () => { ... }).
  6. Жоопкерчилик кайтаруу (implicit return):
    • Жалпы функция: Ачык return талап кылынат.
    • Жебе функция: Бир саптуу денеде автоматтык түрдө натыйжаны кайтарат.

Салыштыруу таблицасы:

Өзгөчөлүк Жалпы функция Жебе функция
Синтаксис function name() { ... } () => { ... }
this контексті Динамик (чакыруу контекстинен) Лексикалык (ата-энесинен)
Куруучу Ооба Жок
arguments объекти Ооба Жок (rest-параметрлер колдонулат)
Аты бар болушу Ооба Анонимдүү (берилет)
Жоопкерчилик кайтаруу Жок (көп учурда return талап кылынат) Ооба (бир саптуу дене үчүн)
// Жалпы функциялардын мисалдары
function standardFunction() {
  console.log(this); // Чакыруу контекстине көз каранды
  console.log(arguments); // arguments объекти бар
}

const obj = {
  method: standardFunction
};

standardFunction(); // this window же undefined
obj.method(); // this obj
new standardFunction(); // this жаңы объект

// Жебе функциялардын мисалдары
const arrowFunction = () => {
  console.log(this); // ата-энеден мурас алат
  // console.log(arguments); // Каталар, arguments жок
};

const outerObj = {
  outerMethod: function() {
    const innerArrowFunction = () => {
      console.log(this); // outerMethodтен мурас (outerObj)
    };
    innerArrowFunction();
  }
};

arrowFunction(); // this window же {} (Node.js)
outerObj.outerMethod(); // innerArrowFunction ичинде this outerObj

// Жебе функцияда автоматтык кайтаруу
const sum = (a, b) => a + b;
console.log(sum(2, 3)); // 5

// Жалпы функция менен ачык кайтаруу
function multiply(a, b) {
  return a * b;
}
console.log(multiply(2, 3)); // 6

// Жебе функция конструктор боло албайт
// new arrowFunction(); // Каталар: TypeError