变量
什么是变量
变量是计算机中用来存储数据的容器。
如果将变量想象成一个“数据”的盒子,盒子上有一个唯一的标注盒子名字的贴纸,这样我们能更轻松地掌握“变量”的概念。
变量 message 可以被想象成一个标有 "message" 的盒子,盒子里面的值为 "Hello!":
// 声明一个变量 message,并且将字符串 'Hello!' 赋值给变量
let message = 'Hello!'
变量的基本使用
变量的声明就是使用 let 关键字来定义一个变量。变量的声明可以在任何地方进行,但是建议在使用变量之前进行声明。
// 声明一个变量 world,并且将字符串 'Hello!' 赋值给它
let world = 'Hello!'
console.log(world) // Hello!
我们可以在盒子内放入任何值。并且,这个盒子的值,我们想改变多少次,就可以改变多少次,当值改变的时候,之前的数据就被从变量中删除了。
变量的命名规范
- 变量名必须以字母、下划线或美元符号开头,不能以数字开头。
- 变量名可以包含字母、数字、下划线和美元符号。
- 变量名区分大小写,例如
age和Age是两个不同的变量。 - 变量名不能使用 JavaScript 中的关键字或保留字。
例如,以下变量名是无效的:
let let = 10; // 报错,let 是一个保留字
let class = 10; // 报错,class 是一个保留字
正确的变量名示例:
let age = 18 // 正确,age 是一个变量名
let _name = '张三' // 正确,_name 是一个变量名
let $salary = 5000 // 正确,$salary 是一个变量名
在 javaScript 开发者中,变量名一般采用驼峰命名法,例如 firstName、lastName、age 等。
常量
常量是一种特殊的变量,它的值在初始化后不能被改变。在 JavaScript 中,常量通常使用 const 关键字来声明。
// 声明一个常量 PI,并且将 3.14 赋值给它
const PI = 3.14
console.log(PI) // 3.14
关键字
在 JavaScript 中,不能把这些关键字与保留字作为变量、标记或函数名来使用。
| 1 | 2 | 3 | 4 |
|---|---|---|---|
| abstract | arguments | await* | boolean |
| break | byte | case | catch |
| char | class* | const | continue |
| debugger | default | delete | do |
| double | else | enum* | eval |
| export* | extends* | false | final |
| finally | float | for | function |
| goto | if | implements | import* |
| in | instanceof | int | interface |
| let* | long | native | new |
| null | package | private | protected |
| public | return | short | static |
| super* | switch | synchronized | this |
| throw | throws | transient | true |
| try | typeof | var | void |
| volatile | while | with | yield |
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
在我们实际开发中,应该根据变量的作用域和是否需要重新赋值来选择使用 const 或 let 声明变量。如果变量的值不会改变,应该使用 const 声明变量;如果变量的值会改变,应该使用 let 声明变量。