JavaScript | 变量

75 阅读4分钟

变量

什么是变量

变量是计算机中用来存储数据的容器。

如果将变量想象成一个“数据”的盒子,盒子上有一个唯一的标注盒子名字的贴纸,这样我们能更轻松地掌握“变量”的概念。

variable.svg

变量 message 可以被想象成一个标有 "message" 的盒子,盒子里面的值为 "Hello!":

// 声明一个变量 message,并且将字符串 'Hello!' 赋值给变量
let message = 'Hello!'

变量的基本使用

变量的声明就是使用 let 关键字来定义一个变量。变量的声明可以在任何地方进行,但是建议在使用变量之前进行声明。

// 声明一个变量 world,并且将字符串 'Hello!' 赋值给它
let world = 'Hello!'
console.log(world) // Hello!

我们可以在盒子内放入任何值。并且,这个盒子的值,我们想改变多少次,就可以改变多少次,当值改变的时候,之前的数据就被从变量中删除了。

变量的命名规范

  1. 变量名必须以字母、下划线或美元符号开头,不能以数字开头。
  2. 变量名可以包含字母、数字、下划线和美元符号。
  3. 变量名区分大小写,例如 ageAge 是两个不同的变量。
  4. 变量名不能使用 JavaScript 中的关键字或保留字。

例如,以下变量名是无效的:

let let = 10; // 报错,let 是一个保留字
let class = 10; // 报错,class 是一个保留字

正确的变量名示例:

let age = 18 // 正确,age 是一个变量名
let _name = '张三' // 正确,_name 是一个变量名
let $salary = 5000 // 正确,$salary 是一个变量名

在 javaScript 开发者中,变量名一般采用驼峰命名法,例如 firstNamelastNameage 等。

常量

常量是一种特殊的变量,它的值在初始化后不能被改变。在 JavaScript 中,常量通常使用 const 关键字来声明。

// 声明一个常量 PI,并且将 3.14 赋值给它
const PI = 3.14
console.log(PI) // 3.14

关键字

在 JavaScript 中,不能把这些关键字与保留字作为变量、标记或函数名来使用。

1234
abstractargumentsawait*boolean
breakbytecasecatch
charclass*constcontinue
debuggerdefaultdeletedo
doubleelseenum*eval
export*extends*falsefinal
finallyfloatforfunction
gotoifimplementsimport*
ininstanceofintinterface
let*longnativenew
nullpackageprivateprotected
publicreturnshortstatic
super*switchsynchronizedthis
throwthrowstransienttrue
trytypeofvarvoid
volatilewhilewithyield

var、const 和 let 的区别

var、const 和 let 都可以用来声明变量,但是它们之间有一些区别。其中,var 在 ECMAScript 的所有版本中都可以使用,而 const 和 let 只能在 ECMAScript 6 及更晚的版本中使用。

1.var 声明的变量是函数作用域的,而 const 和 let 声明的变量是块作用域的。

// var 声明的变量是函数作用域的
function test() {
  var a = 10
  if (true) {
    var a = 20 // 与外部的 a 共享同一个变量
    console.log(a) // 20
  }
  console.log(a) // 20
}

// const 和 let 声明的变量是块作用域的
function test() {
  let age = 10
  if (true) {
    let a = 20 // 与外部的 a 不共享同一个变量
    console.log(a) // 20
  }
  console.log(a) // 10
}

2.var 声明的变量可以重复声明,而 const 和 let 声明的变量不能重复声明。

// var 声明的变量可以重复声明
var age = 10
var age = 20 // 不会报错,但是会警告

// const 和 let 声明的变量不能重复声明
const age = 18
let age = 20 // 报错,重复声明

3.var 声明的变量可以在声明之前使用,而 const 和 let 声明的变量在声明之前不能使用。

// var 声明的变量可以在声明之前使用
console.log(a) // undefined
var a = 10
console.log(a) // 10

// const 和 let 声明的变量在声明之前不能使用
console.log(age) // 报错,age 未定义
let age = 18
console.log(age) // 18

4.const 声明的变量是常量,不能被重新赋值,而 let 声明的变量可以被重新赋值。

// const 声明的变量是常量,不能被重新赋值
const age = 18 // 声明一个常量 age,并且将数字 18 赋值给它
console.log(age) // 18
age = 20 // 报错,常量不能被重新赋值

// let 声明的变量可以被重新赋值
let age = 18 // 声明一个变量 age,并且将数字 18 赋值给它
console.log(age) // 18
age = 20 // 不会报错,因为 age 是一个变量,而不是常量
console.log(age) // 20

在我们实际开发中,应该根据变量的作用域和是否需要重新赋值来选择使用 constlet 声明变量。如果变量的值不会改变,应该使用 const 声明变量;如果变量的值会改变,应该使用 let 声明变量。