js 中声明常量的关键字:var、let、const,其中 let 和 const 是 ES6 中新增的关键字。
let 声明的常量只在 let 所在的代码块中有效。
const 声明的是只读常量且声明时必须初始化,var 和 let 声明时可以不用初始化,同 let 相同,const 也是块级作用域。
全局作用域
在函数外声明的变量作用域是全局的。
var a = "1";
let b = "2";
const c = "3";
//此处可以访问变量 a、b、c
function myFunction()
{
//此处可以访问 a、b、c
}
局部作用域
在函数内声明的变量时局部的。
//此处不能访问变量 a、b、c
function myFunction()
{
var a = "1";
let b = "2";
const c = "3";
//此处可以访问 a、b、c
}
//此处不能访问变量 a、b、c
块级作用域
两个 {} 内声明的变量时块级的。ES6 之前是没有块级作用域概念的。
var 关键字不具备块级作用域的特性,它在 {} 依然能够被访问到。
let 和 const 声明的变量在 {} 内有效,{} 外无效。
{
var a = 1
let b = 2
const c = 3
}
console.log(a) //此处可以使用 a 变量
console.log(b) //此处不可以使用 b 变量
console.log(c) //此处不可以使用 c 变量
使用 var 导致重新定义变量
var a = 1
console.log(a) //1
{
var a = 2
console.log(a) //2
}
console.log(a) //2
在块作用中声明了同名变量 a,导致块作用域之外的变量 a 也被修改了,我们是不希望这种情况发生的。
为了防止此情况发生,使用 let 关键字
let a = 1
console.log(a) //1
{
let a = 2
console.log(a) //2
}
console.log(a) //1
所以声明变量就使用 let 关键字吧,不变常量使用 const 关键字。