ES6
let
特性
- 变量不能重复声明
- 块级作用域(if else while for…)全局、函数、eval(严格模式)
- 不存在变量提示
- 不影响作用域链
{
let name = 'wufeng';
const fn = () => {
console.log(name); // wufeng
};
fn();
}
案例
点击方块变色(var let)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
.item {
width: 50px;
height: 30px;
border: 1px solid red;
margin-right: 10px;
float: left;
}
</style>
</head>
<body>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<script>
let items = document.querySelectorAll('.item');
//使用var,循环结束此时i为3,items[3] undefined 报错
// for (var i = 0; i < items.length; i++) {
// items[i].onclick = () => {
// items[i].style.background = 'pink';
// };
// }
//使用let 块级作用域互不影响
for (let i = 0; i < items.length; i++) {
items[i].onclick = () => {
items[i].style.background = 'pink';
};
}
</script>
</body>
</html>
使用var 声明,报错
const 常量
特性
- 一定要赋初始值
- 值不能修改
- 变量名尽量使用大写
- 块级作用域
- 对对象、数组的元素修改,不算对常量的修改,不会报错(指向的地址没有变化)
const ITEM = ['wufeng', 'wujie', 'sharp'