Tham số của hàm ngoài và hàm trong JavaScript

Hãy để cả hàm ngoài và hàm trong đều nhận tham số:

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

Hãy truyền tham số của hàm ngoài vào lời gọi của hàm trong:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum); // sẽ in ra 1
  }
  
  func(num); //!! truyền tham số
}

test(1); // truyền một số làm tham số

Kết quả là, trong hàm trong sẽ có thể truy cập biến num như một biến bên ngoài từ hàm cha và biến localNum, là biến cục bộ của hàm trong.

Cả hai biến này sẽ có cùng giá trị:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(num); // sẽ in ra 1
    console.log(localNum); // sẽ in ra 1
  }
  
  func(num);
}

test(1);

Sự khác biệt giữa chúng sẽ như sau: nếu trong hàm trong, chúng ta thay đổi biến num - nó cũng sẽ thay đổi trong hàm ngoài:

javascriptfunction test(num) {
  function func(localNum) {
    num = 2; // thay đổi biến num
  }
  
  func(num);   // truyền tham số
  console.log(num);  // sẽ in ra 2
}

test(1); // truyền một số làm tham số

Còn biến localNum sẽ là biến cục bộ. Việc thay đổi nó sẽ không dẫn đến bất kỳ thay đổi nào trong hàm ngoài. Và bản thân biến localNum cũng sẽ không nhìn thấy bên ngoài hàm trong:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2; // thay đổi biến num
  }
  
  func(num); // truyền tham số
}

test(1); // truyền một số làm tham số
Задание 1

Xác định, không chạy code, điều gì sẽ được in ra trong console:

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

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

Xác định, không chạy code, điều gì sẽ được in ra trong console:

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

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

Xác định, không chạy code, điều gì sẽ được in ra trong console:

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

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

Xác định, không chạy code, điều gì sẽ được in ra trong console:

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

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

Xác định, không chạy code, điều gì sẽ được in ra trong console:

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

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

Xác định, không chạy code, điều gì sẽ được in ra trong console:

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

test(1);