当前位置:嗨网首页>书籍在线阅读

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.")
}