04-空格
4.1.3 空格
在大多数情况下,JavaScript并不关心多余的空格(或者空行):一个空格和十个空格没有区别,十个空格和十个空行也没有区别。不过这并不是说可以任意使用空格。比如,前面例子中的while语句可以写成:
while(funds > 1 && funds < 100)
funds = funds + 2;
不过这样把两行连在一起,就很难看出来这是一个while循环!应该尽量避免这种容易引起误解的代码缩进。下面这种格式类似跟上面的类似,不过相对来说更常用一些,也更清晰。
// 不用另起一行
while(funds > 1 && funds < 100) funds = funds + 2;
// 不用另起一行,代码块中只有一行语句
while(funds > 1 && funds < 100) { funds = funds + 2; }
有些人为了强调控制流的一致性和清晰度,坚持使控制流放在块语句中(即使它只有一行)。作者并不觉得这是必须的,需要指出的是,如果不小心写成下面这样的缩进,也很容易引起歧义的。
while(funds > 1 && funds < 100)
funds = funds + 2;
funds = funds - 1;
快速扫过上面的例子,看起来好像是 while
循环中执行了两个语句(前进两步然后退后一步),但是因为它们没有被块语句包起来,JavaScript会这样理解它:
while(funds > 1 && funds < 100)
funds = funds + 2; // while 循环体
funds = funds - 1; // while循环结束
作者同意当块语句只有一行的时候可以省略花括号,不过要时刻注意使用恰当的缩进使代码的意图更清楚。还有,如果在一个团队中工作或者在开源项目中,就应该遵守团队约定好的格式规范,而不是按照自己喜欢的格式。
对于是否对单行代码使用块这个问题,至今还存在争议,一个合乎语法但却饱受责难的选择是:在if语句中混合使用块语句和单行语句。
// 不要这样做
if(funds > 1) {
console.log("There's money left!");
console.log("That means keep playing!");
} else
console.log("I'm broke! Time to quit.");
// 或者这样做
if(funds > 1)
console.log("There's money left! Keep playing!");
else {
console.log("I'm broke"!);
console.log("Time to quit.")
}