var定义的变量可以修改,如果不初始化会输出undefined,不会报错。
const 定义的变量不可以修改,而且必须初始化。
let有块级作用域,var是没有块级作用域,如果在let申明之前使用变量,会报错,let不能重复声明。
{
let a = 9;
console.log(a)
}
console.log(a); // a is not defined
console.log(a) //undefined
console.log(b) //报错
var a = 9;
let b = 9;
常用的面试题:
为一个所有的按钮绑定事件
<button class="box">普通按钮</button>
<button class="box">普通按钮</button>
<button class="box">普通按钮</button>
<button class="box">普通按钮</button>
<button class="box">普通按钮</button>
<script>
var box = document.getElementsByClassName('box');
for(var i = 0 ;i<5;i++){
box[i].onclick = function () {
console.log(i)
}
}
// 如果点击每个按钮会发现他的结果都是5
</script>
var box = document.getElementsByClassName('box');
for(let i = 0 ;i<5;i++){ // 把这里的var改成let
box[i].onclick = function () {
console.log(i)
}
}
// 点击按钮出现的结果是 0 1 2 3 4