Gần đây tôi đã so sánh phiên bản hiện tại của json2.js với phiên bản tôi có trong dự án của mình và nhận thấy sự khác biệt về cách biểu thức hàm được tạo và tự thực thi.Vị trí của dấu ngoặc đơn để tự động thực thi các hàm JavaScript ẩn danh?
Các mã được sử dụng để bọc một chức năng ẩn danh trong ngoặc đơn và sau đó thực hiện nó,
(function() {
// code here
})();
nhưng bây giờ nó kết thúc tốt đẹp các chức năng tự động thực hiện trong ngoặc đơn.
(function() {
// code here
}());
Có một bình luận bởi CMS trong câu trả lời chấp nhận của Explain JavaScript’s encapsulated anonymous function syntax rằng “cả hai:. (function(){})();
và (function(){}());
có giá trị”
tôi đã tự hỏi những gì là sự khác biệt? Liệu các cựu mất bộ nhớ bằng cách để lại xung quanh một chức năng toàn cầu, vô danh? Dấu ngoặc đơn nên được đặt ở đâu?
Xem thêm [Khác biệt giữa (hàm() {})(); và hàm() {}();] (http://stackoverflow.com/q/423228/1048572) và [Có sự khác nhau giữa (hàm() {…}()) hay không; và (function() {...})();?] (http://stackoverflow.com/q/3783007/1048572) – Bergi
Liên quan: [Cú pháp gọi hàm hàm ngay lập tức] (http://stackoverflow.com/q/939386/1048572) (trong JSLint) – Bergi
Cũng đọc về [mục đích của cấu trúc này] (http://stackoverflow.com/q/592396/1048572), hoặc kiểm tra ([technical] (http://stackoverflow.com/ q/4212149/1048572)) [giải thích] (http://stackoverflow.com/q/8228281/1048572) (cũng [ở đây] (http://stackoverflow.com/a/441498/1048572)). Vì lý do tại sao dấu ngoặc đơn là cần thiết, hãy xem [câu hỏi này] (http://stackoverflow.com/q/1634268/1048572). – Bergi