let 与 const 关键字
let 的使用
-
let
用于声明一个块级作用域的本地变量,并且可选的将其初始化为一个值。-
语法:
let var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]];
-
特点:
-
声明的变量只在其声明的块或子块中可用(拥有块级作用域
{}
)。{ var varTest = '小乔' let letTest = '小乔' { // var 声明的变量,没有块级作用域,会覆盖之前的值 var varTest = '妲己' // let 声明的变量,拥有块级作用域,不同作用域的相同名称的变量之间互不影响 let letTest = '妲己' { // 在子块中可用 console.log(letTest) } } console.log('varTest', varTest) console.log('letTest', letTest) }
执行结果:
妲己 varTest 妲己 letTest 小乔
-
变量不可重复声明。
var
重复声明,第二次声明会覆盖第一次声明的值let
重复声明会报错let username = '小小' let username = '妲己' console.log(username)
执行结果:
# 报错 Uncaught SyntaxError: Identifier 'username' has already been declared
-
不会进行预处理,不存在变量提升。
console.log('var声明的变量',varTest) console.log('let声明的变量',letTest) var varTest = 'var 变量提升否' let letTest = 'let 变量提升否'
执行结果:
var声明的变量 undefined # 严格模式下,先使用变量,后进行变量的声明,会直接报错 Uncaught ReferenceError: Cannot access 'letTest' before initialization
-
-
const 的使用
-
const
用于声明创建一个常量或多个常量,其作用域可以是全局或本地声明的块(拥有块级作用域)。-
语法:
const name1 = value1 [, name2 = value2 [, ... [, nameN = valueN]]];
-
特点:
-
const 声明常量时必须进行初始化。
const MY_FAV console.log(MY_FAV)
执行结果:
# 报错 Uncaught SyntaxError: Missing initializer in const declaration
-
初始化后值不能通过再赋值修改,也不能再次声明。
// 定义常量并初始化 const MY_FAV = 123 // 再次给常量赋值 MY_FAV = 456 console.log(MY_FAV)
执行结果:
# 报错 let_const.html:77 Uncaught TypeError: Assignment to constant variable.
注: 约定常量名称用 大写英文字母 表示。
-
-