Khai báo biến và hằng

Cú pháp

Tên biến trong JavaScript phân biệt chữ hoa chữ thường. Trong JavaScript, các câu lệnh được phân tách bằng dấu chấm phẩy (;). Nhưng có thể không cần sử dụng dấu chẩm phẩy sau một câu lệnh nếu nó được viết trên dòng khác nhau.
Tuy nhiên, cách tốt nhất là viết dấu chấm phẩy sau mỗi câu lệnh, ngay cả khi nó không thực sự cần thiết.

Comments

Comment là các lời giải thích trong code được bỏ qua lúc biên dịch chương trình. Cú pháp comment trong Javascript tương tự với C/C++, Java:

1
2
3
4
// đây là comment
/*
Đây là block comment
*/

Khai báo biến

JavaScript có ba cách khai báo biến: var, letconst

Tên biến trong JavaScript phải bắt đầu bằng một chữ cái, dấu gạch dưới (_) hoặc dấu đô la ($). Các ký tự tiếp theo cũng có thể là các chữ số (0-9).

Phạm vi của biến

Khai báo biến được chia làm 2 loại phạm vi:

  • var được sử dụng để khai báo biến function scope - nghĩa là biến khai báo và có giá trị trong một function.
  • letconst được sử dụng để khai báo biến block-scope - biến chỉ có giá trị trong một khối lệnh.
  • Khai báo sử dụng var nằm ngoài tất cả function thì gọi là biến toàn cục (global variable).
  • Một biến với letconst chỉ khai báo được một lần. Khai báo biến với từ khóa var có thể khai báo nhiều lần.

Có một cách khai báo kiểu như x = 42 sẽ tạo ra một biến toàn cục. Chúng ta không nên sử dụng cách này, có thể dẫn tới các lỗi không mong muốn. Ví dụ sau khai báo biến với từ khóa var:

1
2
3
4
5
6
7
8
9
if (true) {
  var x = 5;
}
console.log(x);  // x == 5 là biến toàn cục

function func_a() {
  var y = 6; // biến y chỉ truy cập được trong hàm func_a
}
console.log(y);  // Uncaught ReferenceError, y chưa được định nghĩa

Biến được khai báo với letconst được sử dụng trong khối lệnh chứa nó.

1
2
3
4
if (true) {
  let x = 5;
}
console.log(x);  // Uncaught ReferenceError, x chưa được định nghĩa

Giá trị lúc khai báo biến

Một biến không gán giá trị lúc khai báo với varlet thì nhận giá trị undefined.
Khi cố gắng sử dụng một biến chưa khai báo sẽ được ném một ngoại lệ ReferenceError.

1
2
3
var a;
console.log('Giá trị của a', a); // undefined
console.log('Giá trị của b', b); // Uncaught ReferenceError: b chưa được định nghĩa

Biến toàn cục

Trong các trình duyệt, đối tượng toàn cục là window, vì vậy bạn có thể đặt và truy cập các biến toàn cục bằng cú pháp window.variable. Trong NodeJs, top-level scope không phải là biến toàn cục mà biến local trong module đó.

Trong NodeJs, mỗi file được coi là một module khác nhau.

Ví dụ sử dụng biến global trong các trình duyệt thông qua từ khóa var.

1
2
3
// client Javascript
var global_a = 'Biến toàn cục'; // global_a tương đương với window.global_a
console.log(window.global_a) // Biến toàn cục

Hằng

Khai báo hằng số trong Javascript sử dụng từ khóa const. Khi khai biến với hằng số phải gán giá trị cho nó. Hằng số chỉ trỏ đến một giá trị, tuy nhiên khi lưu giá trị hằng số là object hoặc array thì có thể thay đổi nội dung của đối tượng đó.

1
2
const PI = 3.14; // ok
PI = 4.25; // TypeError, không thể gán lại giá trị lại cho hằng số

Ví dụ khác khi sử dụng hằng số với object:

1
2
3
4
const MY_OBJECT = {'key': 'value'};
MY_OBJECT.key = 'otherValue'; // ok, có thể thay đổi giá trị bên trong Object

MY_OBJECT = {}; // TypeError, không thể gán lại giá trị lại cho hằng số