JavaScript: ES6: Biến


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Một biến, theo định nghĩa, là “một không gian tên trong bộ nhớ” dùng để lưu giá trị hay dữ liệu. Nói cách khác, nó hoạt động như một thùng chứa các giá trị trong một chương trình. Tên biến được gọi là định danh. Sau đây là các quy tắc đặt tên cho một định danh:

  • Định danh không thể là từ khóa.

  • Định danh có thể chứa bảng chữ cái và số.

  • Định danh không thể chứa dấu cách và ký tự đặc biệt, ngoại trừ dấu gạch dưới (_) và ký hiệu đô la ($).

  • Tên biến không thể bắt đầu bằng một số.

Kiểu cú pháp

Một biến phải được khai báo trước khi nó được sử dụng. Cú pháp ES5 đã sử dụng từ khóa var để đạt được điều tương tự. Cú pháp ES5 để khai báo một biến như sau:

//Khai báo biến sử dụng từ khóa var
var tên_biến

ES6 giới thiệu cú pháp khai báo biến sau:

  • Sử dụng let.
  • Sử dụng const.

Khởi tạo biến đề cập đến quá trình lưu trữ một giá trị trong biến ban đầu. Một biến có thể được khởi tạo tại thời điểm khai báo hoặc sau khai báo.

Cú pháp kiểu ES5 truyền thống để khai báo và khởi tạo một biến như sau:

//Khai báo và khởi tạo biến
var tên_biến = giá_trị

Ví dụ: Sử dụng biến trong ES5

var ten = "V1Study"
console.log("Giá trị trong biến là: " + ten)

JavaScript và kiểu động

JavaScript là một ngôn ngữ không định kiểu giống như PHP. Điều này có nghĩa là một biến JavaScript có thể giữ một giá trị của bất kỳ loại dữ liệu nào. Không giống như nhiều ngôn ngữ khác, bạn không phải nói với JavaScript trong quá trình khai báo biến loại giá trị mà biến sẽ lưu. Loại giá trị của một biến có thể thay đổi trong quá trình thực thi chương trình và JavaScript sẽ tự động xử lý nó. Tính năng này được gọi là kiểu động.

Phạm vi của biến JavaScript

Phạm vi của một biến là khu vực của chương trình mà nó được xác định, được sử dụng. Theo truyền thống, JavaScript chỉ định nghĩa hai phạm vi - global và local.

  • Phạm vi global - Một biến có phạm vi global có thể được truy cập từ bên trong bất kỳ phần nào của code JavaScript.

  • Phạm vi local - Một biến có phạm vi local có thể được truy cập từ bên trong một hàm nơi nó được khai báo.

Ví dụ:

Ví dụ sau khai báo hai biến cùng có tên number - một biến ngoài hàm (phạm vi toàn cục) và biến còn lại trong hàm (phạm vi cục bộ).

var number = 'v'
function checkValue() {
   var number = '1' 
   console.log("Giá trị của biến number trong hàm checkValue() là: " + number) 
}
console.log("Giá trị của biến number ngoài hàm checkValue() là: " + number) 
checkValue()

Biến khi được khai báo trong hàm sẽ chỉ hoạt động trong hàm đó và đây là biến cục bộ. Tuy nhiên, biến khi được truy cập bên ngoài hàm sẽ là biến toàn cục.

Đầu ra sau đây được hiển thị khi thực hiện thành công.

Giá trị của biến number trong hàm checkValue() là: v
Giá trị của biến number ngoài hàm checkValue() là: 1

ES6 định nghĩa một phạm vi biến mới đó là phạm vi Khối (Block).

let và phạm vi khối

Phạm vi khối giới hạn quyền truy cập của một biến vào khối mà nó được khai báo. Từ khóa var chỉ định phạm vi chức năng vào biến. Không giống như từ khóa var, từ khóa let cho phép tập lệnh hạn chế quyền truy cập vào biến tại khối bao gần nhất.

"use strict" 
function checkValue() { 
   var num = 1 
   console.log("Giá trị của num trong checkValue(): "+num) { 
      console.log("Bắt đầu khối inner") 
      let num = 2 
      console.log("Giá trị của num: "+num)  
   } 
} 
checkValue()

Trên đây là đoạn script khai báo một biến num trong phạm vi cục bộ của một hàm và khai báo lại nó trong một khối bằng cách sử dụng từ khóa let. Giá trị của biến phạm vi cục bộ được in khi biến được truy cập bên ngoài khối inner, trong khi biến phạm vi khối được tham chiếu trong khối inner.

Lưu ý - Chế độ strict là một cách để chọn tham gia biến thể JavaScript bị hạn chế.

Output sau đây được hiển thị khi thực hiện thành công.

Giá trị của num trong checkValue(): 1
Bắt đầu khối inner
Giá trị của num: 2

Ví dụ với letvar

var va = 1; 
var va = 2; 
console.log(va);

Đầu ra sau đây được hiển thị khi thực hiện thành công mã trên.

2

Còn đây là khai báo và sử dụng let:

let le = 1; 
let le = 2; 
console.log(le);

Đoạn code trên sẽ đưa ra lỗi: Identifier 'le' has already been declared. Bất kỳ biến nào được khai báo sử dụng từ khóa let đều được gán phạm vi khối.

const

Khai báo const tạo ra một tham chiếu chỉ đọc đến một giá trị. Điều đó không có nghĩa là giá trị mà nó giữ là bất biến, chỉ là định danh biến không thể được gán lại. Các hằng số có phạm vi khối, giống như các biến được định nghĩa bằng cách sử dụng câu lệnh let. Giá trị của hằng số không thể thay đổi thông qua việc gán lại và nó không thể được khai báo lại.

Các quy tắc sau đây đúng với một biến được khai báo bằng từ khóa const:

  • Các hằng số không thể được gán lại giá trị.

  • Một hằng số không thể được khai báo lại.

  • Một hằng số yêu cầu một bộ khởi tạo. Điều này có nghĩa là hằng số phải được khởi tạo trong quá trình khai báo.

  • Giá trị được gán cho một biến const là bất biến.

Ví dụ

const x = 1 
x = 1 // sẽ gặp lỗi !!

Đoạn mã trên sẽ trả về một lỗi vì hằng không thể được gán lại một giá trị. Biến hằng là bất biến.

ES6 và hoisting biến

Phạm vi của một biến được khai báo với var là bối cảnh thực thi hiện tại của nó, có thể là hàm hoặc biến toàn cục. Hoisting biến cho phép sử dụng một biến trong chương trình JavaScript, ngay cả trước khi nó được khai báo.

Ví dụ sau giải thích rõ hơn về khái niệm này.

var test = function() {
   for(var i = 0; i<5; i++) {
      console.log(i);
   }
   console.log("i có thể được truy cập ngoài phạm vi khối, i = " + i);
   console.log('i được hoist vào phạm vi hàm');
}
test();

Output:

0
1
2
3
4
i có thể được truy cập ngoài phạm vi khối, i = 5
i được hoist vào phạm vi hàm

JavaScript engine bên trong đại diện cho script như sau:

var test = function() {
   var i; // i được hoist vào phạm vi hàm
   for(var i = 0; i<5; i++) {
      console.log(i);
   }
   console.log("i có thể được truy cập ngoài phạm vi khối, i = " + i);
   console.log('i được hoist vào phạm vi hàm');
}
test();

Lưu ý - Khái niệm hoisting áp dụng cho khai báo biến, không áp dụng cho khởi tạo biến. Nên luôn luôn khai báo các biến ở trước phạm vi của chúng (trước biến toàn cục và trước hàm) để có thể giải quyết phạm vi của biến.

» Tiếp: Phép toán
« Trước: ES6: Cú pháp
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!