Junior
JavaScriptте ок ишарелүү функциялар менен жөнөкөй функциялардын айырмасы эмне?
sobes.tech AI
AIден жооп
- Синтаксис:
- Жалпы функция:
function myFunction() { ... } - Жебе функция:
() => { ... }жеparam => { ... }
- Жалпы функция:
thisконтекст:- Жалпы функция:
thisаныкталат чакыруу контекстинен. - Жебе функция:
thisлексикалык түрдө мурас алат айланасынан (өзүнүнthisи жок).
- Жалпы функция:
- Куруучулар:
- Жалпы функция: Куруучу катары колдонулушу мүмкүн (
new myFunction()). - Жебе функция: Куруучу катары колдонулушу мүмкүн эмес.
- Жалпы функция: Куруучу катары колдонулушу мүмкүн (
argumentsобъекти:- Жалпы функция: Өзүнүн
argumentsобъекти бар. - Жебе функция: Өзүнүн
argumentsжок, жеткиликтүүлүк үчүн rest-параметрлер (...args) колдонулат.
- Жалпы функция: Өзүнүн
- Аты бар функциялар:
- Жалпы функция: Аты бар болушу мүмкүн (
function myFunction() { ... }). - Жебе функция: Анонимдүү, өзгөрмө аркылуу берилет (
const myFunction = () => { ... }).
- Жалпы функция: Аты бар болушу мүмкүн (
- Жоопкерчилик кайтаруу (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