ES系列 | ES6 变量常量( let const)

555 阅读2分钟

「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战」。

前言

本文章将为大家介绍ES6常用中的知识点,后续也会更新介绍ES7-12的新语法。

ES系列文章

ES6简介

ES6, 全称ECMAScript 6.0,是 2015.06 发版。

ES6 主要是为了解决 ES5 的先天不足,比如 JavaScript 里并没有类的概念,但是目前浏览器的 JavaScript 是 ES5 版本,大多数高版本的浏览器也支持 ES6,不过只实现了 ES6 的部分特性和功能。

let 和 const

let 变量

  • 不属于顶层对象window 把顶层对象跟全局挂钩,污染全局变量,js设计初期一大问题
let a = 5
console.log(a)
console.log(window.a)
//输出5 undefined
  • 不允许重复声明 let不可以在相同作用域中重复声明同一个变量,包括也不能和var,const变量名重复,这样代码更加安全。
  let x = 13;
  let x = 23;
  console.log(a)
 //报错 let不可重复声明
  • 不存在变量提升 在使用var进行变量定义时,会发生变量提升。当变量a就已经存在,没有赋初始值,因此在赋值前输出时,则会输出undefined
console.log(a)
var a = 5
//undefined
//上面代码等同于
var a
console.log(a)
a = 5
  • 暂时性死区 若块级作用域内存使用let命令声明的变量,则所在区块对该变量形成封闭作用域,即该变量无视外部的同名变量。
function foo (a = 2, b = a){
    console.log(a, b)
}
foo()

  • 块级作用域 let命令声明的变量只在其块级作用域中有效,就是在{}中。
if (true) {
    let a = 5
}

const 常量

  • const定义的常量不能被改变,一旦声明,常量的值就不能改变。因此,const一旦声明变量,就必须初始化,不能留到以后赋值。
  • const声明的常量,也和let一样不可重复声明。
  • const声明的常量不存在提升。
  • const与let一样, 只在声明所在的块级作用域内有效。
  • const声明的常量同样存在暂时性死区,只能在声明的位置后使用。
  • const实际上保证的,并不是变量的值不得改动,而是变量所指向的那个内存地址所保存的数据不得改动。
const a = 5 
a = 6

const a
a = 5
  • 块级作用域 const命令声明的变量只在其块级作用域中有效,就是在{}中。
if (true) {
    const a = 5
}
  • 暂时性死区
if (true) {
    console.log(a)
    const a = 5
}

一个前端小白,若文章有错误内容,欢迎大佬指点讨论!