ES6 中的 let
和 const
关键字
1. let
关键字
let
关键字用于声明一个变量,它具有块级作用域,这意味着变量只在声明它的块内有效。与 var
不同,let
不允许在同一作用域内重复声明同一个变量。
2. const
关键字
const
关键字用于声明一个常量,一旦声明,其值就不能被更改。与 let
一样,const
也具有块级作用域。
代码示例
let
示例
javascript
// 声明变量
let a;
let b, c, d;
let e = 100;
let f = 521, g = 'iloveyou', h = [];
// 1. 变量不能重复声明
// let star = '罗志祥';
// let star = '小猪';
// 2. 块儿级作用域
// if else while for
// {
// let girl = '周扬青';
// }
// console.log(girl);
// 3. 不存在变量提升
// console.log(song);
// let song = '恋爱达人';
// 4. 不影响作用域链
{
let school = '尚硅谷';
function fn() {
console.log(school);
}
fn();
}
let
应用
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<div class="item" style="width: 50px;height: 50px;background-color: red"></div>
<div class="item" style="width: 50px;height: 50px;background-color: red"></div>
<div class="item" style="width: 50px;height: 50px;background-color: red"></div>
</div>
<script>
let items=document.getElementsByClassName("item");
for (var i=0;i<items.length;i++){
items[i].onclick=function (){
items[i].style.backgroundColor='pink';
}
}
console.log(windows.i) //3
// 当var=3的时候,点击事件开始向外层作用域找,找不到,就是windows.i,此时是3,如果是let i,具有块级作用域,所以每一次触碰事件的i都是不同的。
</script>
</body>
</html>
const
示例
javascript
// 声明常量
const SCHOOL = 'xkadmin';
// 1. 一定要赋初始值
// const A;
// 2. 一般常量使用大写(潜规则)
// const a = 100;
// 3. 常量的值不能修改
// SCHOOL = 'ATGUIGU';
// 4. 块儿级作用域
// {
// const PLAYER = 'UZI';
// }
// console.log(PLAYER);
// 5. 对于数组和对象的元素修改, 不算做对常量的修改, 不会报错
const TEAM = ['UZI', 'MXLG', 'Ming', 'Letme'];
// TEAM.push('Meiko');
总结
let
和const
都具有块级作用域。let
声明的变量可以被重新赋值,而const
声明的常量不能被重新赋值。const
对于数组和对象,只是保证其引用地址不变,内部元素可以修改。