如果条件分成多行,将长JavaScript拆分是否安全?

时间:2015-03-19 20:27:13

标签: javascript

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

上面的代码片段是否适用于所有相关的浏览器?

PS:我也很担心IE8,因为它有太大的市场份额而无法忽视今天。

3 个答案:

答案 0 :(得分:12)

这在规范中解释:

  

7.3 Line Terminators

     

与白色空格字符一样,行终止符字符用于   提高源文本的可读性和分离令牌(不可分割的   词汇单位)彼此。但是,与白色空间不同   字符,行终止符对行为有一些影响   句法语法。通常,线路终结器可能发生在   任何两个令牌,但有一些地方被禁止   句法语法。行终止符也会影响进程   automatic semicolon insertion (7.9)

     

7.9 Automatic Semicolon Insertion

     

某些ECMAScript语句(空语句,变量语句,   表达式语句,do-while语句,continue语句,   必须是break语句,return语句和throw语句   以分号结束。这样的分号可能总是出现   明确地在源文本中。然而,为方便起见,这样   在某些情况下,源文本中可能会省略分号。   这些情况用分号表示   自动插入源代码令牌流中的那些   的情况。

所以在大多数情况下你可以做到。你的情况就是其中之一。

答案 1 :(得分:0)

我最近还发现自己的病情很长。 下面您将找到一个使用 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!");   
}

希望我能为您提供帮助。

答案 2 :(得分:0)

我在Github上发现了这一点,并发现了这一点。现在,这两个都可以接受。我发现第二种情况下需要读取语法。

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

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

AirBnb的首选语法:https://github.com/airbnb/javascript/issues/1380