01/10/2018, 14:13
Let và Var trong Javascript
function drawShape(){
var mContent = document.getElementById("mContent");
mContent.innerHTML = "";
for(var i = 1; i<= 10; i++){
var elmP = document.createElement("p");
elmP.innerHTML = i;
elmP.onclick = function(){
alert("Selected: #" + i);
}
// i = 10
mContent.appendChild(elmP);
}
}
Đoạn mã trên sẽ in ra các số từ 1 đến 10 và khi click vào thì nó đều hiện thông báo là 11 nhưng em đổi từ var
thành let
trong vòng for thì lại hiện ra thông báo đúng khi click từ 1-10. Mọi người giải thích giúp em tại sao lại vậy ạ.
Bài liên quan
Mình không chuyên JS, nhưng theo mình hiểu là như thế này:
Đọc cái này nhé
Loop and Closure
khi đọc về ts có nhắc về cái sida của js là không hủy biến khi hết vòng lặp. ts dùng let thay var để giải quyết vdd này.
var tạo ra một biến có phạm vi truy cập xuyên suốt function chứa nó
let tạo ra một biến có phạm vi truy cập được trong block bao quanh nó