Junior
Функциянын билдирүүсү (function expression) жана функциянын жарыясы (function declaration) арасындагы айырмачылыктар жөнүндө эмне билесиз?
sobes.tech AI
AIден жооп
Функциянын билдирүүсү аталыштуу же аталышсыз болушу мүмкүн. Функциянын декларациясы дайыма аталыштуу болот.
Негизги айырмачылык — көтөрүү механизми (hoisting):
- Функциянын декларациясы: Толук көтөрүлөт, анын ичинде денеси. Функция коддо анын расмий декларациясынан мурун чакырылышы мүмкүн.
- Функциянын билдирүүсү: Жөн гана ага берилген өзгөрмө көтөрүлөт (эгер
varколдонулса). Функция өзү гана анын аныктамасына жеткенден кийин жеткиликтүү болот.letжанаconstменен өзгөрмөлөр үчүн көтөрүү жок.
// Функциянын декларациясы
console.log(declarationFunc()); // Иштейт, функция көтөрүлдү
function declarationFunc() {
return "Мен декларациямын";
}
// Функциянын билдирүүсү
// console.log(expressionFunc()); // TypeError же ReferenceError чыгарат (var/let/constке жараша)
const expressionFunc = function() {
return "Мен билдирүүмүн";
};
console.log(expressionFunc()); // аныктоодон кийин иштейт
Функциянын декларациялары жалпы колдонуу үчүн артыкчылыктуу, анткени алардын тартиби коддо чакыруу мүмкүнчүлүгүнө таасир этпейт. Функциянын билдирүүлөрү көбүнчө колдонулат:
- Анонимдүү функцияларды түзүү үчүн (мисалы, аргумент катары же дароо чакырылган функциялар - IIFE).
- Шарттуу функцияларды аныктоо үчүн.
- Жабдыктарды (closures) түзүү үчүн.