Junior
Fonksiyon ifadesi (function expression) ile fonksiyon bildirimi (function declaration) arasındaki farklar hakkında ne biliyorsun?
sobes.tech yapay zeka
AI'dan gelen yanıt
Fonksiyon ifadesi isimli veya anonim olabilir. Fonksiyon bildirimi her zaman bir isme sahiptir.
Ana fark, yükseltme (hoisting) mekanizmasıdır:
- Fonksiyon bildirimi: Tamamen yükseltilir, gövde dahil. Fonksiyon, gerçek bildirimi öncesinde kodda çağrılabilir.
- Fonksiyon ifadesi: Sadece ona atanan değişken yükseltilir (eğer
varkullanılırsa). Fonksiyon kendisi, yorumlayıcı onun tanımına ulaştığında kullanılabilir hale gelir.letveconstile değişkenler için yükseltme yoktur.
// Fonksiyon bildirimi
console.log(declarationFunc()); // Çalışır, fonksiyon yükseltilmiş
function declarationFunc() {
return "Ben bir bildirimim";
}
// Fonksiyon ifadesi
// console.log(expressionFunc()); // TypeError veya ReferenceError verir (var/let/const'e bağlı olarak)
const expressionFunc = function() {
return "Ben bir ifade";
};
console.log(expressionFunc()); // Tanımlamadan sonra çalışır
Fonksiyon bildirimleri, kodda sıralama önemli olmadığı için tercih edilir. Fonksiyon ifadeleri genellikle kullanılır:
- Anonim fonksiyonlar oluşturmak için (örneğin, argüman olarak veya hemen çağrılan fonksiyon ifadeleri - IIFE).
- Koşullu fonksiyon tanımlamaları.
- Kapanışlar (closures) oluşturmak için.