พารามิเตอร์ของฟังก์ชันภายนอกและภายในใน JavaScript

ลองทำให้ทั้งฟังก์ชันภายนอกและฟังก์ชันภายในรับพารามิเตอร์:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum);
  }
}

ส่งพารามิเตอร์ของฟังก์ชันภายนอกไปยังการเรียกใช้งานฟังก์ชันภายใน:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum); // แสดงผล 1
  }
  
  func(num); //!! ส่งผ่านพารามิเตอร์
}

test(1); // ส่งผ่านพารามิเตอร์เป็นตัวเลข

ผลลัพธ์คือในฟังก์ชันภายในจะสามารถเข้าถึงตัวแปร num ในฐานะตัวแปรภายนอกจากฟังก์ชันแม่ และตัวแปร localNum ซึ่งเป็นตัวแปรท้องถิ่นของฟังก์ชันภายใน

ตัวแปรทั้งสองนี้จะมีค่าเหมือนกัน:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(num); // แสดงผล 1
    console.log(localNum); // แสดงผล 1
  }
  
  func(num);
}

test(1);

ความแตกต่างระหว่างพวกมันจะมีดังนี้: หากในฟังก์ชันภายในเปลี่ยนตัวแปร num - มันจะเปลี่ยนในฟังก์ชันภายนอกด้วย:

javascriptfunction test(num) {
  function func(localNum) {
    num = 2; // เปลี่ยนตัวแปร num
  }
  
  func(num);   // ส่งผ่านพารามิเตอร์
  console.log(num);  // แสดงผล 2
}

test(1); // ส่งผ่านพารามิเตอร์เป็นตัวเลข

ส่วนตัวแปร localNum จะเป็นตัวแปรท้องถิ่น การเปลี่ยนแปลงของมันจะไม่นำไปสู่การเปลี่ยนแปลงใดๆ ในฟังก์ชันภายนอก และตัวแปร localNum เองก็จะไม่สามารถมองเห็นจากภายนอกฟังก์ชันภายใน:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2; // เปลี่ยนตัวแปร num
  }
  
  func(num); // ส่งผ่านพารามิเตอร์
}

test(1); // ส่งผ่านพารามิเตอร์เป็นตัวเลข
Задание 1

กำหนดโดยไม่ต้องรันโค้ด ว่าจะแสดงผลอะไรในคอนโซล:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum);
  }
  
  func(num);
}

test(1);
Задание 2

กำหนดโดยไม่ต้องรันโค้ด ว่าจะแสดงผลอะไรในคอนโซล:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum);
  }
  
  func(num + 1);
}

test(1);
Задание 3

กำหนดโดยไม่ต้องรันโค้ด ว่าจะแสดงผลอะไรในคอนโซล:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(num);
  }
  
  func(num + 1);
}

test(1);
Задание 4

กำหนดโดยไม่ต้องรันโค้ด ว่าจะแสดงผลอะไรในคอนโซล:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2;
  }
  
  func(num);
  console.log(num);
}

test(1);
Задание 5

กำหนดโดยไม่ต้องรันโค้ด ว่าจะแสดงผลอะไรในคอนโซล:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2;
  }
  
  func(num);
  console.log(localNum);
}

test(1);
Задание 6

กำหนดโดยไม่ต้องรันโค้ด ว่าจะแสดงผลอะไรในคอนโซล:

javascriptfunction test(num) {
  function func(localNum) {
    num = 2;
  }
  
  func(num);
  console.log(num);
}

test(1);