Heading for the future

ES6中声明变量 let和const特点

在ES6中新增了let和const

let

特点

  • 不会进行变量声明提升
  • 会生成暂时性死区
  • 变量不允许被重复定义
  • 变量不可以被删除
  • 在for循环当中用let定义i 循环时可以保存 i 的值
  • 在块级元素中用let定义的变量只能在当前块级作用域中使用(注:凡是用{}包裹的都是块级作用域,但是除了对象以外)

对let第四个特点给大家举个小栗子

//若body标签里面有五个button
   <button>按钮1</button>
   <button>按钮2</button>
   <button>按钮3</button>
   <button>按钮4</button>
   <button>按钮5</button>
// script标签里面我们来个标签绑定一个小事件
 <script>
  var btnArr = document.getElementsByTagName("button");
 // 用let定义 i 时点击不同的按钮时,打印的是每个按钮对应i
  for (let i = 0; i < btnArr.length; i++) {
     btnArr[i].onclick = function(){
      console.log(i);
     }
  }
    // 用var定义 i 时点击不同的按钮时,每个按钮打印的都是 5(即循环后 i 的值,因为事件时异步执行的,但是for循环不会等待异步事件)
    var btnArr = document.getElementsByTagName("button");
  for (var i = 0; i < btnArr.length; i++) {
    btnArr[i].onclick = function(){
        console.log(i);
    }
  }
<script> 

const(声明常量)

特点

  • 不会进行变量声明提升
  • 会生成暂时性死区
  • 必须在初始化时赋值。
  • const声明的变量值不允许被修改
  • 常量不允许被删除
posted @ 2018-08-22 18:03  一只菜鸟攻城狮啊  阅读(1177)  评论(0编辑  收藏  举报