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

Khai báo biến JavaScript bên ngoài hay bên trong vòng lặp?

Ngôn ngữ ECMA/JavaScript sẽ hoist (nâng) bất kỳ biến nào được khai báo với var ở đâu lên đầu hàm. Đó là vì ngôn ngữ này có function scope (phạm vi hàm) chứ không có block scope (phạm vi khối) như nhiều ngôn ngữ kiểu C.

function() {
  for(var a = 0; a < 7; a++) {
    var b = 100;
  }
}

tương đương với

function() {
  var b;
  for(var a = 0; a < 7; a++) {
    b = 100;
  }
}

Nhưng với let,情况不同。let có lexical scoping (phạm vi từ vựng). Vì vậy, trừ khi bạn cần cùng biến đó bên ngoài vòng lặp (hoặc mỗi vòng lặp phụ thuộc vào phép toán trên biến đó ở vòng trước), tốt hơn nên khai báo trong phạm vi nơi nó được sử dụng.