美文网首页
ES6 —— let和const

ES6 —— let和const

作者: roylai | 来源:发表于2017-08-30 10:16 被阅读0次

let

let声明一个变量,与var最不同的地方在于。let拥有块级作用域,{ } 所包裹住的地方即为一个块级作用域。

块级作用域中声明的变量在外部无法访问,for循环中:


for(let i = 0; i<3;i++){
  let i = 12
  console.log(i)
}
// 输出3次12

for 循环有两个块级作用域,设置循环变量的是父作用域,{}中的是子作用域。


let arr =[]
for (let i = 0;i<3;i++){
  console.log(i)
  arr.push(function(){
      console.log(i)
  })
}
console.log(i)
console.log(arr[1]())
// 输出 0 ,1 ,2
// 输出 i not defined
// 输出 1

for (var i = 0; i<3; i++){
  console.log(i)
  arr.push(function(){
    console.log(i)
  })
}
console.log(i)
console.log(arr[1]())
// 输出 0 ,1 ,2
// 输出3
// 输出3

let i 只执行了一次,但由于let的创建是尊重块级作用域的,所以每次循环都是一个新的i,值是i++的结果,所以闭包引用的i的地址都是不同的。用var声明的i都是同一个地址,所以闭包的结果是相同的。

暂时性死区和不允许重复声明

在一个块级作用域中,let和const声明的变量就绑定了这个区域,外部声明的与之无关。在块级作用域中声明之前引用这两个变量会报错,称之为暂时性死区。

let a = 1 
if (true) {
  console.log(a)   // a is not defined
  let a = 2
  console.log(a)   // a has already been declared
}

let 和const不存在变量提升,不同于var

相关文章

  • (JS)

    ES6 let、const和var的区别 let和const声明变量不存在变量提升 let和const不能重复声明...

  • ES6(let 与 const)

    ES6中引入了let 和 const来声明变量,我们来看下let 和 const 的使用 一、let let定义的...

  • es6总结一

    es6基础 let和const命令 let和const用于声明变量let跟var的区别 1、let定义过的变量不能...

  • 总结一下前端常见javascript基础面试题:

    1.var ,let 和const的区别: let和const是es6新增的语法, let和var都可以定义变量,...

  • ES6之 let 和 const 命令

    ES6 之 let 和 const 命令 1、let 命令 1.1、基本用法 ES6 新增了let命令,用来声明变...

  • TS中 var 和 let 的区别

    let 和 const 是 ES6 中新增的声明对象的类型。与 var 相比,let 和 const 不存在...

  • es6常用语法

    const 和 let 在es6语法规范中,尽量使用let替代var,如果在const 和let中选,优先使用co...

  • es6解读1: let, const 和 smybol

    let const 作用域 作用域概念 如何使用let和const 使用let 形成块级作用域 es6下强制开启...

  • es6解读1: let,const和symbol

    let 和 const 作用域的概念 如何使用let和const 使用let1、形成块级作用域2、es6下强制开启...

  • es6

    [TOC] 参考阮一峰的ECMAScript 6 入门参考深入浅出ES6 let和const let和const都...

网友评论

      本文标题:ES6 —— let和const

      本文链接:https://www.haomeiwen.com/subject/dpbadxtx.html