Named function expression là biểu thức hàm có gán tên cho hàm. Tên này chỉ có hiệu lực bên trong thân hàm (dùng cho đệ quy) và không pollute scope bên ngoài.
Ví dụ
<!DOCTYPE html> <html lang="vi"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Named function expression</title> <style> body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; } .result { font-size: 20px; font-weight: 500; color: blueviolet; } </style> </head> <body> <h1>Biểu thức hàm có tên trong JavaScript</h1> <div class="result"></div> <br /> <button class="Btn">NHẤN VÀO ĐÂY</button> <h3>Nhấn nút để gọi hàm fact (biểu thức hàm có tên) của đối tượng obj</h3> <script> let resEle = document.querySelector(".result"); let BtnEle = document.querySelector(".Btn"); let obj = { fact: function factorial(n) { if (n <= 1) { return 1; } return n * factorial(n - 1); }, }; BtnEle.addEventListener("click", () => { resEle.innerHTML = obj.fact(5); }); </script> </body> </html>
Kết quả
Kết quả: 120 (5! = 120).
Tên factorial chỉ có thể dùng bên trong chính hàm đó (để gọi đệ quy). Bên ngoài, hàm được truy cập qua obj.fact. Điều này hữu ích cho stack trace debugging và đệ quy nội bộ.