ฉันจะเสนอเส้นทางที่สามเพื่อวางทั้งสองฟังก์ชั่นภายในการปิด มันจะมีลักษณะ:
var functionA = (function(){
function functionB() {
// do stuff...
}
function functionA() {
// do stuff...
functionB();
// do stuff...
}
return functionA;
})();
เราสร้างปิดโดยการตัดคำประกาศของฟังก์ชั่นทั้งในIIFE ค่าส่งคืนของ IIFE เป็นฟังก์ชั่นสาธารณะที่เก็บไว้ในตัวแปรของชื่อสำหรับฟังก์ชั่น functionA()
ฟังก์ชั่นที่สาธารณะสามารถเรียกในตรงทางเดียวกับถ้ามันถูกประกาศเป็นฟังก์ชั่นระดับโลกเช่น โปรดทราบว่าค่าที่ส่งคืนเป็นฟังก์ชันไม่ใช่การเรียกไปยังฟังก์ชันดังนั้นจึงไม่มี parens ในตอนท้าย
โดยการตัดทั้งสองฟังก์ชั่นเหมือนเช่นนั้นfunctionB
อยู่ในขณะนี้ภาคเอกชนอย่างสมบูรณ์และไม่สามารถเข้าถึงนอกของการปิด functionA
แต่มองเห็นได้เฉพาะ มันไม่ได้เป็น cluttering namespace โลก, และfunctionA
จะไม่ให้เกะกะนิยามของ