一、let
1、作用
与var类似,用于声明一个变量
2、特点
-
无法重复声明
-
在块级作用域有效
-
会预编译,有变量提升,但是不能提前使用提升的变量
/* 无法重复声明 */
let a = 123
let a = 345 // 报错
3、let的变量提升
- 全局变量提升:会创建一个变量对象
Script,用来收集全局作用域下 let 定义的变量,但是没有赋值 - 局部变量提升:会将
var let定义的变量全部放到当前函数的变量对象中 - 与
var变量提升的区别:let的变量提升,在为赋值无法使用


4、let的块级作用域
最著名的闭包问题,就是因为var没有属于自己的块级作用域(函数级作用域)才会出现的,所以需要使用一个函数来包裹它,给它一个块级作用域
let btns = document.getElementsByTagName("button");
for(var i = 0; i < btns.length; i++) {
(function (i){
btns[i].onclick = function() {
console.log(i)
};
})(i)
}
但如果使用有块级作用域的变量let,就不会出现这个问题了
let btns = document.getElementsByTagName("button");
for(let i = 0; i < btns.length; i++) {
btns[i].onclick = function() {
console.log(i)
};
}

二、const
1、作用
定义一个常量
2、特点
- 不能修改,(指无法修改指针指向)
- 和
let相同
注意:
obj、array使用const定义的,是可以修改里面的元素的,因为并不会修改指针的指向
本文详细介绍了JavaScript中let和const的用法与特性,包括它们的作用、特点、变量提升及块级作用域等内容,并对比了let与var的区别。

被折叠的 条评论
为什么被折叠?



