การส่งพารามิเตอร์เข้าโมดูลผ่านคลอเชอร์ใน JavaScript

การปฏิบัติที่ดีคือไม่ควรกำหนดค่าใดๆ ลงในโมดูลโดยตรง แต่ควรส่งค่าเหล่านั้นเป็นพารามิเตอร์ของโมดูลเอง (นั่นคือ เป็นพารามิเตอร์ของฟังก์ชันที่ถูกเรียกใช้ทันที):

javascript;(function(arg1, arg2) { // พารามิเตอร์เข้าสู่ตัวแปร
  
})(1, 2); // ส่งพารามิเตอร์บางตัว

ลองดูตัวอย่าง สมมติว่าเรามี div พร้อมตัวเลขและปุ่ม:

html<div id="div">3</div>
<button id="btn">click me</button>

สมมติว่าเรามีโมดูลบางส่วนด้วย:

javascript;(function() {
  let div = document.querySelector('#div');
  let btn = document.querySelector('#btn');
  
  function func(num) {
    return num * num;
  }
  
  btn.addEventListener('click', function() {
    div.textContent = func(div.textContent);
  });
})();

อย่างที่คุณเห็น ซีเลกเตอร์ขององค์ประกอบของเรา ถูกกำหนดไว้อย่างตายตัวในโค้ดโมดูล วิธีแก้ไขที่ดีกว่า คือการส่งพวกมันเป็นพารามิเตอร์ของโมดูล - ด้วยวิธีนี้ในภายหลังเราจะสามารถเปลี่ยนแปลงพวกมันได้ง่าย มาแก้ไขโมดูลของเรากัน:

javascript;(function(selector1, selector2) {
  let div = document.querySelector(selector1);
  let btn = document.querySelector(selector2);
  
  function func(num) {
    return num * num;
  }
  
  btn.addEventListener('click', function() {
    div.textContent = func(div.textContent);
  });
})('#div', '#btn');
Задание 1

กำหนดให้มีปุ่มและอินพุตสามช่องสำหรับป้อนตัวเลข เมื่อกดปุ่ม ให้พิมพ์ผลรวมของตัวเลขที่ป้อนลงในคอนโซล ดำเนินการงานโดยใช้โมดูล