Biến toàn cục và tham số hàm trong JavaScript

Giả sử chúng ta có một hàm nhận một số làm tham số:

javascriptfunction func(localNum) {
  console.log(localNum);
}

Giả sử bên ngoài hàm có biến num:

javascriptfunction func(localNum) {
  console.log(localNum);
}

let num = 1; // biến toàn cục bên ngoài

Hãy gọi hàm của chúng ta, truyền biến num làm tham số:

javascriptfunction func(localNum) {
  console.log(localNum);
}

let num = 1;
func(num); // gọi hàm với tham số, sẽ in ra 1

Kết quả là bên trong hàm sẽ có thể truy cập cả biến localNum (tham số hàm) lẫn biến num (như một biến ngoài):

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

let num = 1;
func(num);

Bản thân biến localNum sẽ là biến cục bộ của hàm và không thể truy cập từ bên ngoài:

javascriptfunction func(localNum) {
  
}

let num = 1;
func(num); // gọi hàm với tham số
console.log(localNum); // sẽ báo lỗi

Vì biến localNum là cục bộ, nên bất kỳ thay đổi nào với nó sẽ không làm thay đổi gì bên ngoài:

javascriptfunction func(localNum) {
  localNum = 2; // không thay đổi gì bên ngoài
}

let num = 1;
func(num);

Nếu bên trong thay đổi biến num (biến toàn cục), thì thay đổi sẽ xuất hiện cả bên ngoài:

javascriptfunction func(localNum) {
  num = 2;
}

let num = 1;
func(num);
console.log(num); // in ra 2

Tuy nhiên, nếu bên trong hàm khai báo biến num qua let, thì chúng ta sẽ tạo ra biến cục bộ num, không ảnh hưởng gì đến biến ngoài:

javascriptfunction func(localNum) {
  let num = 2; // khai báo qua let
}

let num = 1;
func(num);
console.log(num); // in ra 1 - không có gì thay đổi
Задание 1

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

javascriptfunction func(localNum) {
  console.log(localNum);
}

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

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

javascriptfunction func(localNum) {
  console.log(localNum);
}

let num = 1;
func(num);
Задание 3

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

javascriptfunction func(localNum) {
  console.log(localNum);
}

let num = 1;
func(num);
num = 2;
Задание 4

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

javascriptlet num = 1;

function func(localNum) {
  console.log(localNum);
}

num = 2;
func(num);
Задание 5

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

javascriptfunction func(localNum) {
  localNum = 2;
}

let num = 1;
func(num);
console.log(num);
Задание 6

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

javascriptfunction func(localNum) {
  num = 2;
}

let num = 1;
func(num);
console.log(num);
Задание 7

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

javascriptfunction func(localNum) {
  let num = 2;
}

let num = 1;
func(num);
console.log(num);