开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情
Day 1 —— let 和 const 命令
ES6 中的let与const命令,简单理解为声明一个变量、字符串、数组、对象等一系列数据类型,类似于 JS 中的var命令,但不完全相同,let与const存在一些特殊功能。
let 命令
let命令的特点:
-
let声明的变量只在它所在的块级作用域中有效{ var a = 123; let b = 456; console.log(a); // 123 console.log(b); // 456 } console.log(a); // 123 console.log(b); // 报错 -
let不允许重复声明// 在相同块级作用域中,不允许重复声明同一个变量。 function num() { let a = 123; var a = 456; } // 报错 function num() { let a = 123; let a = 456; } // 报错 // 如果函数传入参数,在函数内部不得重新定义该参数。 function num(a) { let a = 123; } num() // 报错 function num(b) { { let b = 456; // 该次声明的变量与参数不处于相同作用域中 } } num() // 不报错 -
let不存在变量提升// 不存在变量提升可简单理解为,在某一变量声明之前,不能返回或者打印该变量,否则会报错 function num() { console.log(b); // undefined var命令存在变量提升 var b = 456; } num(); function num() { console.log(b); // 报错 let命令不存在变量提升 let b = 456; } num(); -
let存在暂时性死区// 暂时性死区,简单理解为变量需要在使用前声明,意思与“不存在变量提升” 一个道理。 var a = 123; function num() { a = 456; let a = 123; console.log(a); } num(); // 报错(num函数内部是一个新的块级作用域,这里不能先定义再用let声明) function num() { let a = b; let b = 456; console.log(a); } num(); // 报错(先声明了a = b,但此时b还未声明,这就是暂时性死区)
const命令
const命令的特点:
-
const声明一个常量// 该常量值声明后不能改变 const num = 2022; console.log(num); // 2022 num = 2023; console.log(num); // 报错 -
const声明变量时必须初始化const num; // 报错 -
const与let命令有相同特点// 只在所声明的块级作用域中有效。 { const YEAR = 1997; } console.log(YEAR); // 报错 // 不得重复声明。 function num() { let a = 123; const a = 456; } // 报错 // 存在暂时性死区。 function num() { console.log(a); const a = 456; } num(); // 报错