在js中,一般声明变量的方式有三种
在ES6之前,都是使用 var 来声明变量的
// 使用var声明变量
var a = 1
console.log(a) // 1
也可以直接声明一个变量
// 遗漏声明 也是可以的, 不过不推荐使用
b = 1
console.log(b) // 1
在 ES6之后 就使用 let 和 const了
// 使用 let 声明变量
let c = "1"
console.log(c)
// 使用 const 声明常量
const z = 3
console.log(z)
注意 : const 声明的不是变量 而是常量,常量是不能修改的
const z = 1
z = 3
conosle.log(z) // 报错
我们这里在说说为什么要新增 let 和 const 两种新的声明方式
因为在ES6之前,使用 var 声明的变量有变量提示的效果,我们可以在变量声明之前使用,而且不会报错
console.log(a) // undefined
var a = 1
console.log(a) // 1
这样就导致我们变量会非常的混乱,而使用let就不会出现这样的问题
console.log(b) // 报错
let b = 2
console.log(b) // 2
使用 let 或者 const 声明的值会有块级作用域 , 而使用 var 声明的值只有函数作用域,没有块级作用域
if(true){
var a = 1
let b = 2
const c = 3
}
console.log(a) // 1
console.log(b) // b is not default
console.log(c) // c is not default
块级作用域就是一对 大括号 包裹起来的 {} 比如我们常见的 for 循环 if 语句都是具有块级作用域的
在使用 var 声明变量是可以重复声明的,而 let 和 const不可以进行重复声明
// 重复声明
var a = 1
console.log(a) // 1
var a = 2
console.log(a) // 2
// 报错 不允许重复声明
let v = 1
let v = 2