变量
大约 2 分钟
变量
变量 是可以改变的量,用来代指事物的状态,在应用程序当中,变量又叫做标识符,用来作为值的符号名
声明变量
在 JavaScript 有三种声明方式:
var
:声明一个函数范围或全局范围的变量,并可将其初始化为一个值(可选)let
:声明一个块级作用域的局部变量,并可以初始化为一个值(可选),但是不能重新声明const
:声明一个块级作用域的局部常量,并可以初始化为一个值(可选),但是不能重新声明,不能重新赋值
声明变量可以使用 var
、let
,声明常量使用 const
,也可以通过直接赋值的方式来声明变量,但是通常不建议这么做
var
var
声明的变量有变量提升的效果,即无论在何处声明,都会在执行代码之前进行处理
var a = 10
console.log(a) //输出 10
console.log(x) //输出 undefined
var x = 1
console.log(x) //输出 1
/*
这里因为变量提升,不会报错,会将 x 的值初始化为 undefined
等价于
var x
console.log(x) // undefined
x = 1
console.log(x) // 1
*/
if(x === 1){
var x = 2
console.log(x) //输出 2
}
console.log(x) // 输出 2
var { name } = { name:'Tom', age:18 } //解构赋值
console.log(name) //输出 Tom
let
let
声明的变量没有变量提升,变量的作用域被限制在代码块中,在编译时才初始化(暂时性死区)
let a = 2
console.log(a) //输出 2
console.log(x) //报错(没有变量提升,所以无法在初始化前访问到 x)
let x = 1
console.log(x) //输出 1
if(x === 1){
var x = 3 //报错 (var 声明的变量没有块作用域的概念,会被提升到全局上下文与然后报错)
let x = 2
console.log(x) //输出 2
}
console.log(x) // 输出 1
let { name } = { name:'Tom', age:18 } //解构赋值
console.log(name) //输出 Tom
const
const
用来声明常量,声明常量的语法与 let
类似
const a = 20
console.log(a) //输出 20
a = 5
console.log(a) //报错,同一个常量声明后不能重新赋值
const a = 7
console.log(a) //报错,同一个常量声明后不能再重新声明
const a
console.log(a) //报错,常量必须要有一个初始值
const { name } = { name:'Tom', age:18 } //解构赋值
console.log(name) //输出 Tom
const list = []
list.push(1,2,3)
console.log(list) //输出 [1,2,3](可以将数组或者对象声明为一个常量,然后操作这个数组或者对象)
ℹ️提示
JavaScript 是区分大小写的,在声明变量时,变量名称的大小写形式会被区分成不同的变量名