การปิดและเรียกใช้ฟังก์ชันทันทีใน JavaScript
อย่างที่คุณทราบแล้ว คุณสามารถเรียกใช้ฟังก์ชัน นิรนามทันทีและกำหนดผลลัพธ์ที่ได้ให้กับ ตัวแปรบางตัว:
let result = function() {
return '!';
}();
console.log(result); // แสดง '!'
บ่อยครั้งที่ฟังก์ชันที่ถูกเรียกใช้ทันทีในกรณีเช่นนี้ จะถูกใส่ในวงเล็บ แม้ว่าจะไม่จำเป็นก็ตาม ทำเช่นนี้เพื่อให้ เห็นได้ทันทีว่าฟังก์ชันถูกเรียกใช้ทันที:
let result = (function() {
return '!';
})();
console.log(result); // แสดง '!'
ตอนนี้ให้ผลลัพธ์ของฟังก์ชันที่ถูกเรียกใช้ทันที เป็นฟังก์ชันนิรนาม:
let func = (function() {
return function() {
console.log('!');
}
})();
func(); // แสดง '!'
มาทำให้ฟังก์ชันที่ถูกส่งคืน
เก็บตัวแปร num ในการปิด:
let func = (function() {
let num = 1;
return function() {
console.log(num);
}
})();
หากเพิ่ม num++ อีก ฟังก์ชัน
func จะกลายเป็นตัวนับที่พร้อมใช้งาน:
let func = (function() {
let num = 1;
return function() {
console.log(num);
num++;
}
})();
func(); // แสดง 1
func(); // แสดง 2
func(); // แสดง 3
func(); // แสดง 4
func(); // แสดง 5
โดยไม่แอบดูโค้ดของฉัน ลองใช้ตัวนับแบบเดียวกันนี้ด้วยตนเอง
ปรับเปลี่ยนการทำงานของตัวนับเพื่อให้
มันนับถึง 5 แล้วเริ่มนับใหม่