1.let : 变量不能重复声明
比如说 : let name = 'hygg';
let name = 'xiaohai';
这样声明变量是会报错的 但是var 可以重复声明变量
var name = 'hygg';
var name = 'xiaohai';
2.let : 块级作用域
例如:
{
let boy = 'xiaohai';
}
console.log(boy);
外面拿里面的变量去输出是不行的, 是会报错的.因为块级作用域只在当前作用域生效
3.let : 不存在变量提升
变量提升:是会把变量声明提到当前作用域的最前面,但是只会提升变量声明,而不会提升变量赋值
console.log(people);
var people = 'hygg'
结果是: undefined
上面代码相当于
var people;
console.log(people);
people = "hygg";
4.let 不影响作用域链
var items = document.querySelectorAll('.item');
// var 循环便利添加绑定事件 会出错
// for(var i = 0; i < items.length; i++) {
// items[i].onclick = function() {
// // this.style.backgroundColor = 'pink';
// items[i].style.backgroundColor = 'pink';
// }
// }
for(let i = 0; i < items.length; i++) {
items[i].onclick = function() {
// this.style.backgroundColor = 'pink';
items[i].style.backgroundColor = 'pink';
}
}
上面代码中 ,经常在dom操作中是会遇到的问题 ,但是我们用let 来声明循环变量就不会遇到这样的问题了
1.const: 一般用于声明常量
2.const: 注意事项
(1) : 一定要赋予初始值
(2) : 常量的值不能被修改
3.const : 他和let 一样也是有块级作用域的概念
4.const : 可以用来声明数组和对象,对于数组和对象元素内部的修改,不算做对常量的修改不会报错
const MATH = [1,2,3,4,5];
MATH.push(6);
console.log(MATH);