การปิดและเรียกใช้ฟังก์ชันทันทีใน JavaScript

อย่างที่คุณทราบแล้ว คุณสามารถเรียกใช้ฟังก์ชัน นิรนามทันทีและกำหนดผลลัพธ์ที่ได้ให้กับ ตัวแปรบางตัว:

javascriptlet result = function() {
  return '!';
}();

console.log(result); // แสดง '!'

บ่อยครั้งที่ฟังก์ชันที่ถูกเรียกใช้ทันทีในกรณีเช่นนี้ จะถูกใส่ในวงเล็บ แม้ว่าจะไม่จำเป็นก็ตาม ทำเช่นนี้เพื่อให้ เห็นได้ทันทีว่าฟังก์ชันถูกเรียกใช้ทันที:

javascriptlet result = (function() {
  return '!';
})();

console.log(result); // แสดง '!'

ตอนนี้ให้ผลลัพธ์ของฟังก์ชันที่ถูกเรียกใช้ทันที เป็นฟังก์ชันนิรนาม:

javascriptlet func = (function() {
  return function() {
    console.log('!');
  }
})();

func(); // แสดง '!'

มาทำให้ฟังก์ชันที่ถูกส่งคืน เก็บตัวแปร num ในการปิด:

javascriptlet func = (function() {
  let num = 1;
  
  return function() {
    console.log(num);
  }
})();

หากเพิ่ม num++ อีก ฟังก์ชัน func จะกลายเป็นตัวนับที่พร้อมใช้งาน:

javascriptlet func = (function() {
  let num = 1;
  
  return function() {
    console.log(num);
    num++;
  }
})();

func(); // แสดง 1
func(); // แสดง 2
func(); // แสดง 3
func(); // แสดง 4
func(); // แสดง 5
Задание 1

โดยไม่แอบดูโค้ดของฉัน ลองใช้ตัวนับแบบเดียวกันนี้ด้วยตนเอง

Задание 2

ปรับเปลี่ยนการทำงานของตัวนับเพื่อให้ มันนับถึง 5 แล้วเริ่มนับใหม่