ES6笔记(一)变量声明:let和const

简介

  ES5 只有两种声明变量的方法:var 命令和 function 命令。let 和 const 是ES6新增的用来声明变量的命令,语法与 var 基本一致。

  ES6 除了添加针对基本数据类型的 let 和 const 命令,另外还有两种声明变量的方法:import 命令用于模块化引入;class 命令用于声明类。
所以,ES6 一共有 6 种声明变量的方法。

  let id = 1;
  const arr = [1, 2, 3];

let 和 const 的共同特点(与var的区别)

  let 和 const 优化了变量声明,解决了一些 var 声明存在的问题,两个命令共同具备以下特点:

1、块级作用域

  ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。为了解决这些问题,let 和 const 实现了 JavaScript 中的块级作用域。
  var 声明的变量作用域是全局,而 let 和 const 声明的变量作用域只存在于声明该变量的代码块{}的内部。

  {
   
      var id = 1
  }
  console.log(id) // 1
  
  // 将var替换成let或const
  {
   
      let id = 1
      console.log(id) // 1
  }
  console.log(id) // undefined

2、不属于顶层对象

  let 与 const 声明的全局变量不是顶层对象window的属性。
  var 声明的变量属于顶层对象window,因此可以通过 window. 变量名来访问这些变量,而 let 和 const 声明的变量不能这样访问。

  var a = 5
  console.log(window.a) // 5
  let a = 5
  console.log(window.a) // undefined

3、不允许重复声明

  var 可以重复声明变量,后声明的变量会覆盖之前声明的同名变量,而let 和 const 不允许重复声明,出现重复声明时会直接报错。

  var id = 1;
  var id = 2;
  console.log(id) // 2
  
  let id1 = 3;
  let id1 = 4;
  console.log(id1)
  // 报错:Identifier 'id1' has already been declared

4、出现暂时性死区

  ES6 明确规定,如果区块中存在 let 和 const 命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。

  var id = 1
  if (true) {
   
      id 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值