Junior
Care este diferența dintre cele două moduri de a defini o funcție?
sobes.tech AI
Răspuns de la AI
Principalul diferență este contextul this.
| Mod de definire a funcției | Diferență |
|---|---|
declarație de funcție |
Contextul this este determinat de modul în care este apelată funcția. Este ridicat înainte de execuția codului (hoisting). |
funcție săgeată |
Contextul this moștenește din contextul înconjurător (lexical). Nu se ridică (fără hoisting). |
// declarație de funcție
function funcțieObișnuită() {
console.log(this); // `this` depinde de apel
}
// funcție săgeată
const funcțieSăgeată = () => {
console.log(this); // `this` moștenește din contextul în care este definită funcția
};
Funcțiile săgeată nu au propriul obiect arguments (se ia din contextul extern) și nu pot fi folosite ca constructori cu operatorul new.