Tôi đang đọc một cuốn sách tuyệt vời có tên "Bí mật của Ninja JavaScript" được viết bởi John Resig & Gấu Bibeaoult. Trong chương 3.2, nó đưa ra một ví dụ;Tại sao các hàm ẩn danh trong javascript có tên?
var canFly = function(){ return true; };
Sau đó, nó nói;
Chức năng ẩn danh được tạo và gán cho biến toàn cầu có tên canFly. Do tính chất chức năng của JavaScript, hàm có thể được gọi thông qua tham chiếu này là canFly(). Về mặt này, nó gần như tương đương với chức năng để khai báo một hàm có tên là "canFly", nhưng không hoàn toàn. Một khác biệt lớn là thuộc tính tên của hàm là "", không phải là "canFly".
Nhưng khi tôi cố gắng thực hiện các ví dụ về Công cụ nhà phát triển Chrome và kiểm tra việc name
tài sản của canFly
chức năng, nó sẽ trả về giá trị "canFly" thay vì một chuỗi rỗng.
canFly.name;
// > "canFly"
Các chức năng ẩn danh được gán cho biến không có tên trong những ngày trước đó? Nếu vậy, điều gì đã thay đổi? Hoặc các tác giả có mắc sai lầm không?
Tôi không thể nhớ nơi tôi đọc nó nhưng tôi nhớ đọc rằng trong phiên bản mới của Node/V8 ngay cả chức năng ẩn danh khi được gán cho một biến sẽ nhận được tên biến. Sẽ đăng câu trả lời khi tôi tìm thấy một liên kết. – Aron
[* Tên chức năng suy luận *: Các biến và phương thức có thể suy ra tên của hàm ẩn danh từ vị trí cú pháp của nó (mới trong ECMAScript 2015)] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Tham khảo/Global_Objects/Chức năng/tên # Inferred_function_names) –
Hiện chúng tôi đi. Cảm ơn @AlexK. – Aron