Parameter Fungsi Luaran dan Dalaman dalam JavaScript

Mari kita buat supaya kedua-dua fungsi luaran dan dalaman menerima parameter:

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

Mari kita hantar parameter fungsi luaran kepada panggilan fungsi dalaman:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum); // akan memaparkan 1
  }
  
  func(num); //!! menghantar parameter
}

test(1); // menghantar nombor sebagai parameter

Jadi, dalam fungsi dalaman, pembolehubah num akan boleh diakses sebagai pembolehubah luaran dari fungsi induk dan pembolehubah localNum, yang merupakan pembolehubah tempatan fungsi dalaman.

Kedua-dua pembolehubah ini akan mempunyai nilai yang sama:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(num); // akan memaparkan 1
    console.log(localNum); // akan memaparkan 1
  }
  
  func(num);
}

test(1);

Perbezaan antara mereka adalah seperti berikut: jika dalam fungsi dalaman kita mengubah pembolehubah num - ia juga akan berubah dalam fungsi luaran:

javascriptfunction test(num) {
  function func(localNum) {
    num = 2; // mengubah pembolehubah num
  }
  
  func(num);   // menghantar parameter
  console.log(num);  // akan memaparkan 2
}

test(1); // menghantar nombor sebagai parameter

Manakala pembolehubah localNum akan menjadi tempatan. Perubahannya tidak akan menyebabkan sebarang perubahan dalam fungsi luaran. Dan pembolehubah localNum itu sendiri tidak akan kelihatan dari luar fungsi dalaman:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2; // mengubah pembolehubah num
  }
  
  func(num); // menghantar parameter
}

test(1); // menghantar nombor sebagai parameter
Задание 1

Tentukan, tanpa menjalankan kod, apa yang akan dipaparkan dalam konsol:

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

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

Tentukan, tanpa menjalankan kod, apa yang akan dipaparkan dalam konsol:

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

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

Tentukan, tanpa menjalankan kod, apa yang akan dipaparkan dalam konsol:

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

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

Tentukan, tanpa menjalankan kod, apa yang akan dipaparkan dalam konsol:

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

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

Tentukan, tanpa menjalankan kod, apa yang akan dipaparkan dalam konsol:

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

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

Tentukan, tanpa menjalankan kod, apa yang akan dipaparkan dalam konsol:

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

test(1);