Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Mục đích của từ khóa var trong JavaScript


Giống nhiều ngôn ngữ khác, JavaScript có biến. Biến là container (chứa) có tên. Đặt dữ liệu vào và tham chiếu bằng tên. Từ khóa var dùng để khai báo biến.

Khai báo biến

<script>
  var money;
  var name;
</script>

Khai báo nhiều biến cùng một var:

<script>
  var money, name;
</script>

Variable Initialization (Khởi tạo)

Gán giá trị cho biến gọi là khởi tạo. Có thể làm tại khai báo hoặc sau:

// Tại khai báo
var money = 1000;
var name = "John";

// Sau khi khai báo
var money;
money = 1000;

var vs let vs const (ES6)

Đặc điểmvarletconst
ScopeFunction-scopedBlock-scopedBlock-scoped
HoistingCó (initialized = undefined)Có (TDZ - uninitialized)Có (TDZ)
Re-declareCho phépKhôngKhông
Re-assignCho phépCho phépKhông (binding)
Global propertyTạo property trên window/globalThisKhôngKhông

Vấn đề của var

// 1. Function scope - leak ra block
if (true) {
  var x = 1;
}
console.log(x); // 1 - x leak ra ngoài block!

// 2. Hoisting gây bug
console.log(y); // undefined (không error - confusing)
var y = 5;

// 3. Loop closure bug
for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 100); // 3, 3, 3
}
// Fix: dùng let
for (let i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 100); // 0, 1, 2
}

Khuyến nghị hiện đại

  • Mặc định dùng const (bất biến binding).
  • Cần reassign → let.
  • Tránh var trừ khi maintain legacy code hoặc cần function-scope/hoisting hành vi cụ thể.
  • ESLint: no-var, prefer-const.