⊗jsPmFTFENIn 233 of 505 menu

JavaScript'te Fonksiyon İfadelerinin Nüansları

Fonksiyon İfadesi (Function Expression) adı boşuna verilmemiştir. Gerçekten de bu, bu tür fonksiyonların herhangi bir ifadenin parçası olduğu anlamına gelir.

Örneğin, bir string ve isimsiz bir fonksiyonu toplayabiliriz:

let str = 'str' + function() {return 3;}; console.log(str); // 'strfunction() {return 3;}' yazacaktır

Neden 3 sayısını değil de bu tuhaf sonucu görüyoruz? Çünkü ikinci toplanan, fonksiyonun çalışma sonucu değil, onun kaynak kodudur (sonuçta bu fonksiyonu çağırmadık, sadece yazdık).

Yani fonksiyon ifadesi adı, böyle bir fonksiyonun herhangi bir ifadede yer aldığını belirtir.

Bir değişkene atama da bir ifadedir:

let func = function() { console.log('!'); };

Örneğin, bir fonksiyonu console.log parametresi olarak da iletebiliriz ve konsola kaynak kodunu yazdıracaktır - bu da bir ifade sayılacaktır:

console.log(function() {return 3;});

Bu neden önemli: Çünkü Fonksiyon Bildirimi (Function Declaration) ve Fonksiyon İfadesi (Function Expression) arasındaki fark, kesinlikle birincisinin bir isimle oluşturulması, ikincisinin ise başlangıçta bir isme sahip olmaması değildir. Durum bu değil.

Örnek. İşte isimsiz bir fonksiyonumuz var ama aynı zamanda herhangi bir ifadede yer almıyor (yani basitçe söylemek gerekirse, onunla herhangi bir işlem yapılmıyor):

/* Bu fonksiyon bir Fonksiyon Bildirimi olacaktır, ancak sentaks hatası ile: */ function() { console.log('!'); }

Böyle bir kod hata verecektir! Neden: Fonksiyon herhangi bir ifadede yer almadığı için, tarayıcı onu bir Fonksiyon Bildirimi olarak kabul eder, ancak ismini bulamaz ve hata verir.

Hatadan kurtulmak için, fonksiyonu herhangi bir ifadenin parçası haline getirmemiz gerekir. Örneğin, önüne bir + işlemi yazalım:

+function() { // böyle bir kod doğrudur console.log('!'); };

Bu nasıl çalışıyor: + işleminin kendi başına bir etkisi yoktur, bu 3 sayısı yerine +3 yazmak gibidir - kabul edilebilir, ancak hiçbir şeyi değiştirmez.

Ancak fonksiyon söz konusu olduğunda - değiştirir. Artık fonksiyonumuz sadece yazılmış değil, bir ifadede yer alıyor. Bu nedenle artık hata olmayacaktır. Fonksiyonun çalıştırılma sonucu da olmayacaktır, çünkü onu sadece yazdık, çağırmadık.

+ yerine herhangi bir şey yazılabilir. Örneğin:

-function() { // böyle bir kod doğrudur console.log('!'); }; !function() { // böyle bir kod doğrudur console.log('!'); };

Ayrıca fonksiyonumuzu yuvarlak parantezler içine alabiliriz, bu durumda o da bir fonksiyon ifadesi haline gelecektir:

(function() { // böyle bir kod doğrudur console.log('!'); });

Sunulan fonksiyonun Fonksiyon Bildirimi mi yoksa Fonksiyon İfadesi mi olduğunu belirleyin:

function func() { console.log('!'); }

Sunulan fonksiyonun Fonksiyon Bildirimi mi yoksa Fonksiyon İfadesi mi olduğunu belirleyin:

let func = function() { console.log('!'); }

Sunulan fonksiyonun Fonksiyon Bildirimi mi yoksa Fonksiyon İfadesi mi olduğunu belirleyin:

+function() { console.log('!'); }

Sunulan fonksiyonun Fonksiyon Bildirimi mi yoksa Fonksiyon İfadesi mi olduğunu belirleyin:

!function func() { console.log('!'); }

Sunulan fonksiyonun Fonksiyon Bildirimi mi yoksa Fonksiyon İfadesi mi olduğunu belirleyin:

-function func() { console.log('!'); }

Sunulan fonksiyonun Fonksiyon Bildirimi mi yoksa Fonksiyon İfadesi mi olduğunu belirleyin:

1 + function func() { console.log('!'); }

Sunulan fonksiyonun Fonksiyon Bildirimi mi yoksa Fonksiyon İfadesi mi olduğunu belirleyin:

(function func() { console.log('!'); })

Sunulan fonksiyonun Fonksiyon Bildirimi mi yoksa Fonksiyon İfadesi mi olduğunu belirleyin:

console.log( function() { console.log('!'); } );
Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet