Tôi sẽ đề xuất một con đường thứ ba, để đặt cả hai chức năng trong một bao đóng. Nó sẽ trông như:
var functionA = (function(){
function functionB() {
// do stuff...
}
function functionA() {
// do stuff...
functionB();
// do stuff...
}
return functionA;
})();
Chúng tôi tạo ra bao đóng bằng cách gói khai báo của cả hai hàm trong IIFE . Giá trị trả về của IIFE là hàm công khai, được lưu trữ trong một biến của tên cho hàm. Hàm công khai có thể được gọi theo cách chính xác giống như khi nó được khai báo là hàm toàn cục, nghĩa là functionA()
. Lưu ý rằng giá trị trả về là hàm , không phải là lệnh gọi hàm, do đó không có parens ở cuối.
Bằng cách gói hai hàm như vậy, functionB
giờ đây hoàn toàn riêng tư và không thể truy cập bên ngoài bao đóng, nhưng chỉ hiển thị cho functionA
. Nó không làm lộn xộn không gian tên toàn cầu và không làm lộn xộn định nghĩa của functionA
.