28.2.2语句最少化
多个变量声明
声明多个变量时很容易出现多条语句。比如,下面使用多个 let 声明多个变量的情况很常见:
// 有四条语句:浪费
let count = 5;
let color = "blue";
let values = [1, 2, 3];
let now = new Date();
在强类型语言中,不同数据类型的变量必须在不同的语句中声明。但在 JavaScript 中,所有变量都 可以使用一个 let 语句声明。前面的代码可以改写为如下:
// 一条语句更好
let count = 5,
color = "blue",
values = [1, 2, 3],
now = new Date();
这里使用一个 let 声明了所有变量,变量之间以逗号分隔。这种优化很容易做到,且比使用多条语 句执行速度更快。
插入迭代性值
任何时候只要使用迭代性值(即会递增或递减的值),都要尽可能使用组合语句。来看下面的代码 片段:
let name = values[i];
i++;
前面代码中的两条语句都只有一个作用:第一条从 values 中取得一个值并保存到 name 中,第二 条递增变量 i。把迭代性的值插入第一条语句就可以将它们合并为一条语句:
let name = values[i++];
这一条语句完成了前面两条语句完成的事情。因为递增操作符是后缀形式的,所以 i 在语句其他部分 执行完成之前是不会递增的。只要遇到类似的情况,就要尽量把迭代性值插入到上一条使用它的语句中。
使用数组和对象字面量
使用构造函数始终会产生比单 858 第 28 章 最佳实践 纯插入元素或定义属性更多的语句,而字面量只需一条语句即可完成全部操作。来看下面的例子:
// 创建和初始化数组用了四条语句:浪费
let values = new Array();
values[0] = 123;
values[1] = 456;
values[2] = 789;
// 创建和初始化对象用了四条语句:浪费
let person = new Object();
person.name = "Nicholas";
person.age = 29;
person.sayName = function () {
console.log(this.name);
};
在这个例子中,分别创建和初始化了一个数组和一个对象。两件事都用了四条语句:一条调用构造 函数,三条添加数据。这些语句很容易转换成字面量形式:
// 一条语句创建并初始化数组
let values = [123, 456, 789];
// 一条语句创建并初始化对象
let person = {
name: "Nicholas",
age: 29,
sayName() {
console.log(this.name);
},
};
重写后的代码只有两条语句:一条创建并初始化数组,另一条创建并初始化对象。相对于前面使用 了 8 条语句,这里使用两条语句,减少了 75%的语句量。对于数千行的 JavaScript 代码,这样的优化效 果可能更明显。 应尽可能使用数组或对象字面量,以消除不必要的语句。