Transpile: chuyển đổi từ ngôn ngữ này sang ngôn ngữ khác chứ không có runtime
ví dụ như Typescript hay Traceur convert từ TS qua ES5, ES6 let
biến tạo từ let không nằm trong global scope
biến tạo từ let chỉ nằm trong block scope của chính nó
let myVar = 1;
{
let myVar = 2;
console.log(myVar); // 2
{
for (let myVar = 4; myVar > 3; myVar--) {
console.log(myVar); // 4
}
}
}
console.log(myVar); // 1
const
tạo rồi là không thể thay đổi
mặc dù vậy, có thể đổi giá trị bên trong nó
quay lại bài by reference & by value const cũng bị giới hạn trong chính block scope của nó
có thuốc global scope window không thì cần check const myVar = 1;
myVar = 2; // báo lỗi, đổi reference point trong memory
const myVar = { name: 'Tony' };
myVar.name = 'Alex'; // có thể đổi được, vì reference vẫn không đổi
// thường đặt tên const là viết hoa
const MY_VAR = 1;