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ố:
function func(localNum) {
console.log(localNum);
}
Giả sử bên ngoài hàm có biến num:
function 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ố:
function 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):
function 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:
function 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:
function 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:
function 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:
function 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
Xác định, không chạy code, điều gì sẽ được in ra console:
function func(localNum) {
console.log(localNum);
}
func(1);
Xác định, không chạy code, điều gì sẽ được in ra console:
function func(localNum) {
console.log(localNum);
}
let num = 1;
func(num);
Xác định, không chạy code, điều gì sẽ được in ra console:
function func(localNum) {
console.log(localNum);
}
let num = 1;
func(num);
num = 2;
Xác định, không chạy code, điều gì sẽ được in ra console:
let num = 1;
function func(localNum) {
console.log(localNum);
}
num = 2;
func(num);
Xác định, không chạy code, điều gì sẽ được in ra console:
function func(localNum) {
localNum = 2;
}
let num = 1;
func(num);
console.log(num);
Xác định, không chạy code, điều gì sẽ được in ra console:
function func(localNum) {
num = 2;
}
let num = 1;
func(num);
console.log(num);
Xác định, không chạy code, điều gì sẽ được in ra console:
function func(localNum) {
let num = 2;
}
let num = 1;
func(num);
console.log(num);