⊗jsPmFTFENIn 233 of 505 menu

Nuansa Ekspresi Fungsi dalam JavaScript

Nama Function Expression diberikan bukan tanpa sebab. Ia benar-benar bermakna demikian - bahawa fungsi sedemikian merupakan sebahagian daripada sesuatu ungkapan.

Sebagai contoh, kita boleh menambahkan sebarang rentetan dan fungsi tanpa nama:

let str = 'str' + function() {return 3;}; console.log(str); // akan memaparkan 'strfunction() {return 3;}'

Mengapa kita melihat hasil yang pelik sedemikian, dan bukan nombor 3? Kerana sebutan kedua - ini bukan hasil kerja fungsi, tetapi kod sumbernya (lagipun kita tidak memanggil fungsi ini, hanya menulisnya).

Maksudnya nama ekspresi fungsi menandakan bahawa fungsi sedemikian mengambil bahagian dalam sesuatu ungkapan.

Penetapan kepada pemboleh ubah juga merupakan ungkapan:

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

Boleh juga, sebagai contoh, menghantar fungsi sebagai parameter dalam console.log dan ia akan memaparkan kod sumbernya dalam konsol - ini juga akan dianggap sebagai ungkapan:

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

Mengapa ini penting: kerana perbezaan Function Declaration dan Function Expression sama sekali bukan pada fungsi pertama dicipta dengan nama, manakala fungsi kedua pada asalnya tidak mempunyai nama. Ini tidak benar.

Contoh. Ini adalah fungsi tanpa nama, tetapi pada masa yang sama tidak mengambil bahagian dalam sebarang ungkapan (iaitu tidak ada sebarang tindakan dilakukan ke atasnya, secara mudahnya):

/* Fungsi ini akan menjadi Function Declaration, tetapi dengan ralat sintaks: */ function() { console.log('!'); }

Kod sedemikian akan menghasilkan ralat! Mengapa: oleh kerana fungsi tidak mengambil bahagian dalam sebarang ungkapan, maka pelayar menganggapnya sebagai Function Declaration, tetapi tidak menemui namanya dan menghasilkan ralat.

Untuk ralat hilang, perlu menjadikan fungsi sebagai sebahagian daripada sesuatu ungkapan. Sebagai contoh, tuliskan operasi + di hadapannya:

+function() { // kod sedemikian adalah betul console.log('!'); };

Bagaimana ini berfungsi: operasi + itu sendiri tidak melakukan apa-apa, ini sama seperti menulis sebagai ganti nombor 3 nombor +3 - boleh diterima, tetapi tidak mengubah apa-apa.

Tetapi dalam kes fungsi - ia mengubah. Sekarang fungsi kami bukan hanya ditulis, tetapi mengambil bahagian dalam ungkapan. Oleh itu, ralat sekarang tidak akan berlaku. Hasil pelaksanaan fungsi juga tidak akan ada, kerana kami hanya menulisnya, tetapi tidak memanggilnya.

Sebagai ganti + boleh menulis apa sahaja. Sebagai contoh:

-function() { // kod sedemikian adalah betul console.log('!'); }; !function() { // kod sedemikian adalah betul console.log('!'); };

Boleh juga letakkan fungsi kami dalam kurungan bulat, dalam kes ini ia juga akan menjadi ekspresi fungsi:

(function() { // kod sedemikian adalah betul console.log('!'); });

Tentukan sama ada fungsi yang ditunjukkan adalah Function Declaration atau Function Expression:

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

Tentukan sama ada fungsi yang ditunjukkan adalah Function Declaration atau Function Expression:

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

Tentukan sama ada fungsi yang ditunjukkan adalah Function Declaration atau Function Expression:

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

Tentukan sama ada fungsi yang ditunjukkan adalah Function Declaration atau Function Expression:

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

Tentukan sama ada fungsi yang ditunjukkan adalah Function Declaration atau Function Expression:

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

Tentukan sama ada fungsi yang ditunjukkan adalah Function Declaration atau Function Expression:

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

Tentukan sama ada fungsi yang ditunjukkan adalah Function Declaration atau Function Expression:

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

Tentukan sama ada fungsi yang ditunjukkan adalah Function Declaration atau Function Expression:

console.log( function() { console.log('!'); } );
Melayu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan kuki untuk operasi laman web, analisis dan personalisasi. Pemprosesan data dijalankan mengikut Polisi Kerahsiaan.
terima semua tataletak tolak