1.let声明变量
let a;
let b, c, d;
let e = 2323, f = '我是大帅哥', g = [];
1.变量不能重复声明
let start = '罗志祥';
let start = '小猪';
这样会报错:
let start = '罗志祥';
console.log(start);
这样就不会报错:
2.块儿级作用域 全局作用域 函数作用域 eval作用域(严格函数中存在)
// if else while for 都存在着作用域,在大括号内部有作用
{
let girl = '周扬青';
let boy = '罗志祥';
let c = "666!";
}
console.log(girl);
console.log(boy);
console.log(c);
这样就违背了块儿级作用域的本意,输出时会报错:
{
let girl = '周扬青';
let boy = '罗志祥';
let c = "666!";
console.log(girl);
console.log(boy);
console.log(c);
}
如果在内部使用的话就不会报错:
3.不存在变量提升
console.log(song);
var song=123;
var先输出再定义会导致输出找不到:(在进行输出的时候,var会提前进行收集定义的变量)
console.log(song);
let song=123;
let先输出再定义会导致错误:(let定义时需要先定义再进行输出)
4.不影响作用域链
{
let school='清华大学';
function fn(){
console.log(school);
}
fn();
}
在let作用域中定义的变量,在作用域内都会有作用,包括在内部的作用域,不影响作用域链:
2.点击切换颜色
<body>
<div class="container">
<h2 class="page-header">点击切换颜色</h2>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</body>
<script>
// 获取div元素对象
let items = document.getElementsByClassName('item');
// 遍历并绑定事件
for (var i = 0; i < items.length; i++) {
items[i].onclick = function () {
// 修改当前元素的背景颜色
this.style.background = 'pink';
}
}
</script>
点击哪一个方块,哪一个方块的背景颜色改变: