将长的JavaScript if条件语句拆分成多行是否安全?

43
if ( true && true ||
  false && false ||
  true && true ) {
  console.log( 'Splitting condition into multiple lines worked!' );
}

以上的代码片段在所有相关的浏览器中都能工作吗?

PS:我也关注IE8,因为它在今天有着太大的市场份额而不能忽视。


我们的编码标准实际上有每行150个字符的限制,所以有时必须像这样分开写。 - Christopher Marshall
2
相关内容 - James Thorpe
1
if语句条件中忽略空格(不自动添加分号)。 - dandavis
3个回答

29

在条件语句中,浏览器对于空格和换行符是非常包容的。你可以诚实地使用很多东西(无论好坏)。目前这两种格式是行业标准。个人而言,我更喜欢第二种语法。

语法A

if (
  a === 123 &&
  b === 'abc'
) { ... }

语法 B

if (
  a === 123
  && b === 'abc'
) { ... }

AirBnb偏爱的语法:https://github.com/airbnb/javascript/issues/1380


22
这在规范中有解释:

7.3 行终止符

与空格字符类似,行终止符字符用于提高源代码的可读性,并将标记(不可分割的词法单元)彼此分开。但是,与空格字符不同的是,行终止符对语法文法的行为有一定影响。通常情况下,行终止符可以出现在任何两个标记之间,但在一些情况下,它们被语法文法禁止使用。行终止符也会影响自动分号插入 (7.9)的过程。

7.9 自动分号插入

某些 ECMAScript 语句(空语句、变量声明语句、表达式语句、do-while 语句、continue 语句、break 语句、return 语句和 throw 语句)必须以分号结尾。这样的分号可以始终明确地出现在源代码中。然而,为了方便,在某些情况下,这样的分号可以从源代码中省略。这些情况被描述为在这些情况下,分号会自动插入到源代码标记流中。

因此,在大多数情况下,您可以做到这一点。而您的情况就是其中之一。


3

我最近遇到了一个非常长的条件语句。以下是我使用 Boolean() 解决它的示例:

const a = new Array('', '  ', '    ');
const empty = Boolean(a[0].trim() == '' || 
                      a[1].trim() == '' || 
                      a[2].trim() == '' ||);
if (!empty){
   console.log("Fine!");
}else{
   console.log("Not fine!");   
}

我希望我能帮助你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接