Skip to content

变量

变量 是数据的“命名存储”。我们可以使用变量来保存商品、访客和其他信息。

变量

在 JavaScript 中创建一个变量,我们需要用到 let 关键字。

下面的语句创建(也可以称为 声明 或者 定义)了一个名称为 “message” 的变量:

js
let message;

现在,我们可以通过赋值运算符 = 为变量添加一些数据:

js
let message;

message = 'Hello'; // 将字符串 'Hello' 保存在名为 message 的变量中

现在这个字符串已经保存到与该变量相关联的内存区域了,我们可以通过使用该变量名称访问它:

js
let message;
message = 'Hello!';

alert(message); // 显示变量内容

简洁一点,我们可以将变量定义和赋值合并成一行:

js
let message = 'Hello!'; // 定义变量,并且赋值

alert(message); // Hello!

也可以在一行中声明多个变量:

js
let user = 'John', age = 25, message = 'Hello';

看上去代码长度更短,但并不推荐这样。为了更好的可读性,请一行只声明一个变量。

多行变量声明有点长,但更容易阅读:

js
let user = 'John';
let age = 25;
let message = 'Hello';

一些程序员采用下面的形式书写多个变量:

js
let user = 'John',
  age = 25,
  message = 'Hello';

……甚至使用“逗号在前”的形式:

js
let user = 'John'
  , age = 25
  , message = 'Hello';

技术上讲,这些变体都有一样的效果。所以,这是个个人品味和审美方面的问题。

var 而不是 let

在较老的脚本中,你也可能发现另一个关键字 var,而不是 let

js
var message = 'Hello';

var 关键字与 let “大体”相同,也用来声明变量,但稍微有些不同,也有点“老旧”。关于 var 请参阅 “老旧的 var”

更改变量的值

js
let message;

message = 'Hello!';

message = 'World!'; // 值改变了

alert(message);

当值改变的时候,之前的数据就被从变量中删除了。

我们还可以声明两个变量,然后将其中一个变量的数据拷贝到另一个变量。

js
let hello = 'Hello world!';

let message;

// 将字符串 'Hello world' 从变量 hello 拷贝到 message
message = hello;

// 现在两个变量保存着相同的数据
alert(hello); // Hello world!
alert(message); // Hello world!

声明两次会触发 error

一个变量应该只被声明一次。

对同一个变量进行重复声明会触发 error:

js
let message = "This";

// 重复 'let' 会导致 error
let message = "That"; // SyntaxError: 'message' has already been declared

变量的命名

JavaScript 的变量命名有两个限制:

  1. 变量名称必须仅包含字母、数字、符号 $ 和 _。
  2. 首字符必须非数字。
  3. 不得是“保留字”
  4. 如果命名包括多个单词,通常采用 小驼峰式命名法。(一个不成文的规定,非必须)

有效的命名,例如:

js
let test123;
let myVeryLongName;

let $ = 1; // 使用 "$" 声明一个变量
let _ = 2; // 现在用 "_" 声明一个变量

无效的命名,例如:

js
let 1a; // 不能以数字开始

let my-name; // 连字符 '-' 不允许用于变量命名

let let = 5; // 不能用 "let" 来命名一个变量,错误!
let return = 5; // 同样,不能使用 "return",错误!

区分大小写

命名为 appleAPPLE 的变量是不同的两个变量。

允许非英文字母,但不推荐

可以使用任何语言,包括西里尔字母(cyrillic letters)甚至是象形文字,就像这样:

js
let имя = '...';
let= '...';

从技术上讲,这样没问题。这样的命名是完全允许的,但是用英文进行变量命名是国际惯例。哪怕我们正在写一个很小的脚本,它也有可能会被使用很久。某个时候,来自其他国家的人可能会需要阅读它。

正确命名变量

一个变量名应该有一个清晰、明显的含义,对其存储的数据进行描述。

变量命名是编程过程中最重要且最复杂的技能之一。声明变量之前,多花点时间思考它的更好的命名。你会受益良多。

一些可以遵循的规则:

  • 使用易读的命名,比如 userName 或者 shoppingCart。
  • 离诸如 a、b、c 这种缩写和短名称远一点,除非你真的知道你在干什么。
  • 变量名在能够准确描述变量的同时要足够简洁。不好的例子就是 data 和 value,这样的名称等于什么都没说。如果能够非常明显地从上下文知道数据和值所表达的含义,这样使用它们也是可以的。
  • 脑海中的术语要和团队保持一致。如果网站的访客称为“用户”,则我们采用相关的变量命名,比如 currentUser 或者 newUser,而不要使用 currentVisitor 或者一个 newManInTown。

常量

声明一个常数(不变)变量,可以使用 const 而非 let

js
const myBirthday = '18.04.1982';

使用 const 声明的变量称为“常量”。它们不能被修改,如果你尝试修改就会发现报错:

js
const myBirthday = '18.04.1982';

myBirthday = '01.01.2001'; // 错误,不能对常量重新赋值

当程序员能确定这个变量永远不会改变的时候,就可以使用 const 来确保这种行为,并且清楚地向别人传递这一事实。

常量的命名

一个普遍的做法是将常量用作别名,以便记住那些在执行之前就已知的难以记住的值。

通常,一个不成文的规定就是 使用大写字母和下划线来命名这些常量

例如,让我们以所谓的“web”(十六进制)格式为颜色声明常量:

js
const COLOR_RED = "#F00";
const COLOR_GREEN = "#0F0";
const COLOR_BLUE = "#00F";
const COLOR_ORANGE = "#FF7F00";

// ……当我们需要选择一个颜色
let color = COLOR_ORANGE;
alert(color); // #FF7F00

好处:

  • COLOR_ORANGE#FF7F00 更容易记忆。
  • 比起 COLOR_ORANGE 而言,#FF7F00 更容易输错。
  • 阅读代码时,COLOR_ORANGE#FF7F00 更易懂。

基于 MIT 许可发布