一、const
1、const:可以理解为人为限制的常量(保证变量指向的那个内存地址不得改动)
例子如下:
const a = [];
undefined
a.push('123');
1
a.push('1234');
2
a.length;
2
a = ['GGG'];
VM228:1 Uncaught TypeError: Assignment to constant variable.
at <anonymous>:1:3
(anonymous) @ VM228:1
二、let
1、let:作用于块
也可以理解为let 的作用域是自己最近的{}
var letTest = {
test:function() {
let x = 1;
if (true) {
let x = 2; // 不同的变量
console.log(x); // 2
}
console.log(x); // 1
}
}
效果:
2、应用场景举例:
简化内部函数代码
原因:如果把let改成var的话,最后的结果list的都是相同的值,因为经过内部函数阶段后都将返回相同的i,因为var作用于整个封闭式函数
var list = document.getElementById('list');
for (let i = 1; i <= 5; i++) {
let item = document.createElement('li');
item.appendChild(document.createTextNode('Item ' + i));
item.onclick = function(ev) {
console.log('Item ' + i + ' is clicked.');
};
list.appendChild(item);
}
三、var
1、var :作用于整个封闭式函数(也可设置为全局变量)
var varTest = {
test:function() {
var x = 1;
if (true) {
var x = 2; // 不同的变量
console.log(x);
}
console.log(x);
}
}
效果: