⊗jsPmFTNFE 235 of 505 menu

Biểu thức hàm có tên trong JavaScript

Giả sử chúng ta có một biểu thức hàm như sau:

let test = function() { console.log('!'); }; test(); // sẽ in ra '!'

Hãy đặt tên cho hàm của chúng ta là func:

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

Như bạn đã biết, không thể truy cập hàm bằng tên này:

let test = function func() { console.log('!'); }; test(); // sẽ in ra '!' func(); // sẽ báo lỗi

Vậy tại sao lại đặt tên cho hàm nếu nó không thể truy cập được? Vấn đề là tên này sẽ không thể truy cập từ bên ngoài hàm, nhưng có thể truy cập được bên trong hàm đó.

Hãy kiểm tra:

let test = function func() { console.log(func); // hàm sẽ in ra mã nguồn của chính nó }; test(); // gọi hàm

Hãy gọi hàm của chúng ta bên trong chính nó:

let test = function func() { console.log('!'); // in ra '!' func(); // gọi chính chúng ta }; test();

Nếu chạy mã này, một số lượng vô hạn các kết quả sẽ được in ra bảng điều khiển.

Thực tế, hàm của chúng ta có thể được gọi bên trong chính nó không chỉ là func, mà còn là test:

let test = function func() { console.log('!'); test(); // gọi chính chúng ta }; test();

Vậy sự khác biệt là gì? Sự khác biệt là tên test - chỉ đơn giản là một biến. Trong quá trình chạy script, hàm của chúng ta có thể được gán vào một biến khác hoặc truyền dưới dạng tham số - trong trường hợp này, mối liên hệ giữa biến test và hàm có thể bị mất.

Còn tên func thì được gắn cứng với hàm một cách đặc biệt để có thể tham chiếu đến hàm của chúng ta bên trong chính nó.

Những Function Expression có tên hàm như vậy được gọi là biểu thức hàm có tên.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối