Cách khai báo biến trong JavaScript

Javascript căn bản | by Học Javascript

Trong lập trình JavaScript, biến là một phần quan trọng không thể thiếu. Biến dùng để lưu trữ và thao tác với dữ liệu trong suốt quá trình thực thi chương trình. Việc hiểu rõ cách khai báo và sử dụng biến là bước đầu tiên để trở thành lập trình viên JavaScript thành thạo.

JavaScript cung cấp ba cách để khai báo biến: let, const, và var, mỗi từ khóa này có những đặc điểm riêng biệt về phạm vi (scope) và cách thức sử dụng. Việc nắm vững sự khác biệt giữa các từ khóa này sẽ giúp bạn tránh được các lỗi phổ biến trong lập trình và tối ưu hóa mã nguồn. Bài viết này sẽ hướng dẫn chi tiết cách khai báo biến trong JavaScript, giúp bạn hiểu rõ cách sử dụng chúng trong các tình huống khác nhau.

Biến trong JavaScript là gì?

Biến là một không gian lưu trữ dữ liệu trong bộ nhớ, cho phép lập trình viên lưu trữ và thao tác với các giá trị trong quá trình thực thi chương trình. Biến có thể chứa các giá trị như số, chuỗi, mảng, đối tượng, hoặc các kiểu dữ liệu khác. Mỗi biến được gán một tên duy nhất và có thể thay đổi giá trị trong suốt quá trình chạy của chương trình (trừ khi là biến hằng).

Tại sao cần sử dụng biến trong JavaScript?

Lưu trữ Dữ Liệu:

  • Biến giúp lưu trữ các giá trị như số, chuỗi, mảng hoặc đối tượng mà bạn cần sử dụng nhiều lần trong chương trình.

Tăng tính Linh hoạt:

  • Bằng cách sử dụng biến, bạn có thể thay đổi giá trị của các tham số trong chương trình mà không phải viết lại toàn bộ mã nguồn. Điều này giúp chương trình trở nên linh hoạt và dễ bảo trì.

Quản lý Dữ Liệu:

  • Khi làm việc với các dữ liệu động, chẳng hạn như dữ liệu nhập từ người dùng hoặc kết quả tính toán, biến giúp quản lý và xử lý dữ liệu hiệu quả hơn.

Các từ khóa khai báo biến trong JavaScript

JavaScript cung cấp ba từ khóa chính để khai báo biến: let, const, và var. Mỗi từ khóa có đặc điểm và phạm vi sử dụng khác nhau. Dưới đây là chi tiết về từng từ khóa.

let - Khai báo biến có phạm vi khối (Block Scope)

Đặc điểm:

  • Biến khai báo với let có phạm vi hoạt động trong một khối mã (block), tức là chỉ có thể sử dụng trong phạm vi mà nó được khai báo (chẳng hạn như trong một vòng lặp hoặc câu lệnh điều kiện).
  • Bạn có thể thay đổi giá trị của biến sau khi khai báo.

Ví dụ:

let x = 5; // Khai báo biến x với giá trị ban đầu là 5
console.log(x); // In ra: 5

x = 10; // Thay đổi giá trị của x
console.log(x); // In ra: 10

Phạm vi khối:

if (true) {
    let y = 20; // Biến y chỉ có thể truy cập được trong khối if
    console.log(y); // In ra: 20
}
console.log(y); // Lỗi: y không được định nghĩa

const - Khai báo biến hằng (Constant) Với Phạm Vi Khối

Đặc điểm:

  • Biến khai báo với const có phạm vi hoạt động tương tự let, nhưng giá trị của nó không thể thay đổi sau khi được gán. Điều này làm cho const thích hợp cho các giá trị không thay đổi trong suốt chương trình, như các hằng số hoặc các tham số không cần thay đổi.

Ví dụ:

const PI = 3.14; // Khai báo hằng số PI
console.log(PI); // In ra: 3.14

// PI = 3.14159; // Lỗi: Không thể thay đổi giá trị của hằng số

Lưu ý: const chỉ yêu cầu phải gán giá trị khi khai báo, nếu không sẽ gây lỗi.

// const z; // Lỗi: Biến phải được gán giá trị khi khai báo

Var - Khai báo biến có phạm vi hàm (Function Scope)

Đặc điểm:

  • Biến khai báo với var có phạm vi hoạt động trong hàm mà nó được khai báo (hoặc trong toàn bộ chương trình nếu khai báo ở ngoài hàm).
  • Khác với letconst, var có thể bị hoisting (di chuyển khai báo lên trên đầu phạm vi), điều này đôi khi có thể gây nhầm lẫn và lỗi trong chương trình.
  • Không khuyến khích sử dụng var trong các ứng dụng hiện đại, vì nó có các vấn đề về phạm vi và hoisting, letconst thường được ưu tiên hơn.

Ví dụ:

var a = 5;
console.log(a); // In ra: 5

a = 10; // Có thể thay đổi giá trị của biến var
console.log(a); // In ra: 10

Hoisting (Nâng cao):

console.log(b); // In ra: undefined (hoisting đã xảy ra)
var b = 5;

Phạm vi hàm:

function testVar() {
    var c = 10;
    console.log(c); // In ra: 10
}

testVar();
console.log(c); // Lỗi: c is not defined

Quy tắc đặt tên biến trong JavaScript

Khi lập trình JavaScript, việc đặt tên biến là rất quan trọng, bởi vì nó không chỉ giúp chương trình dễ đọc mà còn đảm bảo tính hợp lệ của mã nguồn. JavaScript có một số quy tắc và nguyên tắc cần tuân thủ khi đặt tên biến.

Quy tắc đặt tên biến

Không bắt đầu bằng số:

Sai cú pháp:

  • Tên biến không được bắt đầu bằng một chữ số, mặc dù có thể chứa số ở các vị trí khác. Điều này giúp tránh những lỗi cú pháp trong chương trình.
let 1variable = 5; // Lỗi: Tên biến không thể bắt đầu bằng số

Có thể chứa các ký tự chữ cái, chữ số, dấu gạch dưới (_), và dấu đô la ($):

  • Tên biến có thể bao gồm các ký tự chữ cái, số (trừ vị trí đầu tiên), dấu gạch dưới (_), và dấu đô la ($).

Hợp lệ:

let variable_1 = 10;
let $value = 20;

Không sử dụng từ khóa JavaScript:

  • Tên biến không được trùng với từ khóa của ngôn ngữ JavaScript như let, var, if, else, function, v.v.

Sai cú pháp:

let function = 5; // Lỗi: 'function' là từ khóa trong JavaScript

Không có khoảng trắng:

  • Tên biến không thể có khoảng trắng giữa các từ. Thay vào đó, bạn có thể sử dụng dấu gạch dưới (_) hoặc kiểu viết hoa chữ cái đầu mỗi từ (camelCase) để tách các từ.

Hợp lệ:

let user_name = "John";
let userName = "John";

Phân biệt chữ hoa và chữ thường:

  • JavaScript phân biệt chữ hoa và chữ thường, vì vậy myVariablemyvariable là hai biến khác nhau.

Hợp lệ:

let myVariable = 10;
let myvariable = 20;

Các quy ước đặt tên:

  • Mặc dù JavaScript cho phép sử dụng ký tự đặc biệt như $_, tuy nhiên, để mã nguồn dễ đọc và dễ bảo trì, nên sử dụng các tên biến mô tả chức năng của biến (tên dễ hiểu).
  • Phổ biến nhất là sử dụng camelCase cho tên biến, với chữ cái đầu tiên viết thường và mỗi từ sau viết hoa.

Ví dụ:

let userAge = 25;   // camelCase
let user_name = "Alice"; // snake_case (thường ít được dùng trong JavaScript)

Sử dụng biến trong JavaScript

Biến trong JavaScript không chỉ giúp lưu trữ và quản lý dữ liệu mà còn có thể được sử dụng trong các phép toán, hàm và cấu trúc điều kiện. Dưới đây là cách khai báo, gán giá trị cho biến và sử dụng chúng trong các tình huống khác nhau.

Cách khai báo và gán giá yrị cho biến

Khi khai báo biến trong JavaScript, bạn có thể gán giá trị cho biến ngay lập tức hoặc khai báo biến mà không gán giá trị ban đầu.

Khai báo và gán giá trị ngay lập tức:

let x = 10; // Khai báo biến x và gán giá trị 10
const name = "Alice"; // Khai báo hằng số name với giá trị "Alice"

Khai báo mà không gán giá trị:

let y; // Khai báo biến y nhưng chưa gán giá trị
console.log(y); // In ra: undefined
y = 20; // Gán giá trị cho biến y
console.log(y); // In ra: 20

Sử dụng biến trong các phép toán

Biến có thể được sử dụng trong các phép toán cơ bản như cộng, trừ, nhân, chia.

Ví dụ về phép toán:

let a = 10;
let b = 5;
let sum = a + b; // Cộng hai biến
let difference = a - b; // Trừ hai biến
let product = a * b; // Nhân hai biến
let quotient = a / b; // Chia hai biến

console.log("Tổng:", sum); // In ra: Tổng: 15
console.log("Hiệu:", difference); // In ra: Hiệu: 5
console.log("Tích:", product); // In ra: Tích: 50
console.log("Thương:", quotient); // In ra: Thương: 2

Sử dụng biến trong các hàm

Biến có thể được truyền vào và sử dụng trong các hàm.

Ví dụ về hàm sử dụng biến:

function greet(name) {
   let greetingMessage = "Hello, " + name + "!";
   return greetingMessage;
}

let message = greet("John");
console.log(message); // In ra: Hello, John!

Trong ví dụ trên, biến name được truyền vào hàm greet, và biến greetingMessage lưu trữ kết quả của phép toán chuỗi.

Sử dụng biến trong cấu trúc điều kiện

Các biến cũng được sử dụng trong các câu lệnh điều kiện (if, else).

Ví dụ về cấu trúc điều kiện:

let age = 18;
if (age >= 18) {
    console.log("Bạn đủ tuổi trưởng thành.");
} else {
    console.log("Bạn chưa đủ tuổi trưởng thành.");
}

Trong ví dụ này, biến age được kiểm tra trong câu lệnh if để xác định xem người đó đủ tuổi trưởng thành hay không.

Phạm vi biến (Scope) trong JavaScript

Phạm vi biến trong JavaScript liên quan đến nơi mà biến có thể được truy cập và thay đổi trong chương trình. Phạm vi biến được phân chia thành hai loại chính: phạm vi hàm (function scope)phạm vi khối (block scope). Việc hiểu rõ phạm vi biến là rất quan trọng để tránh những lỗi không mong muốn liên quan đến việc truy cập và thay đổi giá trị của biến trong các phần khác nhau của chương trình.

Phạm vi hàm (Function Scope)

Phạm vi hàm là phạm vi mà biến được khai báo bên trong một hàm có thể truy cập. Khi bạn khai báo một biến trong một hàm, biến đó chỉ có thể được sử dụng trong hàm đó. Các biến này không thể được truy cập từ bên ngoài hàm.

Ví dụ minh họa về phạm vi hàm:

function myFunction() {
    let x = 10; // Biến x có phạm vi trong hàm
    console.log(x); // In ra 10
}
myFunction();
console.log(x); // Lỗi: x không xác định, vì x chỉ có phạm vi trong hàm myFunction

Trong ví dụ trên, biến x chỉ tồn tại trong phạm vi của hàm myFunction và không thể truy cập từ bên ngoài.

Phạm vi khối (Block Scope)

Phạm vi khối là phạm vi mà biến được khai báo trong một khối mã, chẳng hạn như trong một vòng lặp, câu lệnh điều kiện (if, else), hoặc khối mã giữa cặp dấu ngoặc nhọn {}. Các biến khai báo bằng let hoặc const có phạm vi khối, tức là chỉ có thể truy cập trong phạm vi của khối mà chúng được khai báo.

Ví dụ minh họa về phạm vi khối:

if (true) {
    let y = 20; // Biến y có phạm vi trong khối if
    console.log(y); // In ra 20
}
console.log(y); // Lỗi: y không xác định, vì y chỉ tồn tại trong phạm vi khối if

Trong ví dụ trên, biến y chỉ có thể được truy cập trong khối if và không thể sử dụng bên ngoài nó.

Tầm quan trọng của phạm vi biến

Việc hiểu và kiểm soát phạm vi của biến là rất quan trọng trong lập trình vì:

  • Tránh xung đột tên biến: Nếu bạn không kiểm soát phạm vi biến, các biến có thể bị trùng tên và gây ra xung đột không mong muốn.
  • Bảo vệ tính toàn vẹn của dữ liệu: Khi sử dụng phạm vi hàm hoặc phạm vi khối đúng cách, bạn có thể đảm bảo rằng dữ liệu không bị thay đổi ngoài phạm vi mong muốn, giúp bảo vệ tính toàn vẹn của chương trình.
  • Quản lý bộ nhớ hiệu quả: Việc khai báo biến trong phạm vi khối hoặc phạm vi hàm giúp JavaScript thu hồi bộ nhớ khi biến không còn được sử dụng nữa.

Kết bài

Trong lập trình JavaScript, việc khai báo và sử dụng biến đúng cách là một kỹ năng quan trọng giúp bạn xây dựng các ứng dụng web hiệu quả và dễ bảo trì. Hiểu rõ về phạm vi biến, các từ khóa khai báo như let, const, var, cũng như việc tuân thủ các quy tắc đặt tên biến sẽ giúp tránh được những lỗi phổ biến và cải thiện chất lượng mã nguồn của bạn.

Bằng cách nắm vững các khái niệm và lỗi thường gặp khi khai báo biến, bạn sẽ dễ dàng kiểm soát dữ liệu, tăng cường tính bảo mật và tối ưu hóa hiệu suất cho các dự án JavaScript của mình. Chúc bạn tiếp tục phát triển kỹ năng lập trình và tạo ra những sản phẩm web chất lượng cao!

Bài viết liên quan

  • 2