ES6 ------ let实践案例

简介: ES6 ------ let实践案例

实现效果: 点击div框, 切换颜色

css代码

  .item{
            width:90px;
            height: 40px;
            display: inline-block;
            border: 2px lightblue solid;
     }

html代码

  <div class="container">
        <h2>点击切换颜色</h2><hr/>
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
    </div>

js代码

  //获取div元素对象
  let items = document.getElementsByClassName('item')
  //遍历并绑定事件
  for(let i=0;i<items.length;i++){
    items[i].onclick = function() {
      //修改当前元素的背景颜色
      items[i].style.background = 'pink'  //var声明时不可用
      //this.style.background = 'pink'   //var和let声明均可用
    }
  }

如果使用 var 声明, 再使用 items[i].style.background = 'pink' 修改背景颜色, 则此时的 i 为 3,没有这个div块,会报 Cannot read properties of undefined (reading 'style') [ 无法读取未定义的属性(读取“样式”)] 的错误


for循环中 var 和 let 的区别:

var 命令的存在变量提升,var 命令实际只会执行一次。而 let 命令不存在变量提升,所以每次循环都会执行一次,声明一个新变量(但初始化的值不一样)。for 的每次循环都是不同的块级作用域,let 声明的变量是块级作用域的,所以也不存在重复声明的问题。let 声明变量的for循环里,每个匿名函数实际上引用的都是一个新的变量。


相关文章
|
5天前
|
JavaScript 前端开发
大项目事件58-----打包发布-------概念介绍
大项目事件58-----打包发布-------概念介绍
|
2月前
|
前端开发 JavaScript
前端 TS 快速入门之四:函数
前端 TS 快速入门之四:函数
9 0
ES6----内置对象拓展
ES6----内置对象拓展
|
12月前
|
存储 关系型数据库 MySQL
MySQL数据库第三课 ------简单命令再进阶-------成为大牛必备2
MySQL数据库第三课 ------简单命令再进阶-------成为大牛必备
|
11月前
|
JavaScript
ES6----ES6模块化
ES6----ES6模块化
|
12月前
|
算法 安全 JavaScript
python---js逆向------再接再励------案例
python---js逆向------再接再励------案例
|
12月前
|
关系型数据库 MySQL Linux
MySQL数据库第三课 ------简单命令再进阶-------成为大牛必备1
MySQL数据库第三课 ------简单命令再进阶-------成为大牛必备
|
JavaScript 前端开发
ES6 ------ 基础(五)
ES6 ------ 基础(五)

热门文章

最新文章