跳到主要内容

WTF JavaScript 极简教程: 2. 声明变量

WTF JavaScript 教程,帮助新人快速入门 JavaScript。

推特@WTFAcademy_@0xAA_Science

WTF Academy 社群: 官网 wtf.academy | WTF Solidity 教程 | discord | 微信群申请

所有代码和教程开源在 github: github.com/WTFAcademy/WTF-JavaScript


编程最基本的技术之一就是使用变量(variable)来表示值,就像用 0xAA 来指代一个人。在 JavaScript 程序中使用变量之前必须先声明这个变量。这一讲,我们将介绍声明变量的三个关键字 letconst,和 var,以及它们之间的区别。

let

在现代 JavaScript 中(ES6 版本之后),变量通过 let 关键字声明。

// 1. 先声明 year 变量,再给它赋值 2023
let year;
year = 2023;
// 2. 声明 name 变量的同时给它赋值 "0xAA"
let name = "0xAA";
// 3. 声明 newName 变量,同时将变量 name 的值 “0xAA” 赋给它
let newName = name;

在上面的代码中,我们先声明了一个名为 year 的变量,并给它赋值 2023;之后声明另一个名为 name 变量的同时给它赋值 "0xAA"。最后,我们声明了一个名为 newName 的变量,并将变量 name 的值("0xAA")赋给它。

代码中以 // 开头的行是注释,用于提高代码的可读性,不会被执行。

const

在声明常量(constant,值不能改变的变量)是要用 const 关键字,声明时必须给它赋值。常量在第一次赋值后不能改变,不然会报错。

// 声明 age 常量,并赋值 18
const age = 18;
// 尝试改变常量的值时会报错 TypeError: Assignment to constant variable
age = 20;

var(不推荐)

在 ES6 之前的 JavaScript 中,没有 letconst 关键字,声明变量只能用 var 关键字。varlet 使用上类似,但是会造成全局对象的污染,是个过时的关键字,不推荐使用。

// 声明 variable 变量并赋值 "hello"
var variable = "hello"

更多关于 var 的细节请参考 MDN教程

使用规范

ES6 之后新增的 letconst 关键字很好地解决了过时的 var 在作用域和语义上存在的诸多问题,也形成了开发时的使用规范。

  1. 能用 const 就用 const:使用 const 声明变量可以确保一些重要的值不会被改变,同时也能迅速发现一些因意外赋值导致的不合理行为。

  2. 不能用 const 就用 let,不要使用var:当开发者提前知道某些变量未来需要被修改时就使用 let,这样可以确保变量拥有明确的作用域和声明位置。

习题

下面的代码是否会报错?如果会,请修改它,让它正确运行。你可以在链接上找到这段代码。

const fruit = 'apple'
fruit = 'orange'
console.log(fruit)

总结

这一讲我们介绍了声明变量的三个关键字 letconst,和 var,并讲解了它们之间的区别和用法。在开发中,能用 const 就用 const,不能用 const 就用let,不要使用 var