2015-12-15 46 views
0

我刚刚拿起ternary声明的概念,并试图用它来代替我熟悉的if/else if/else声明。但代码似乎有一个语法错误。什么是ternary声明无法做到if声明可以做到的?我想知道ternary语句是否更适合执行简单的命令。JavaScript:在`if`语句中工作的`for循环`在`ternary`语句中不起作用?为什么?


的“bin”阵列子阵列的集合,由从“库存”阵列丢弃的物品,的splicepush方法礼貌。


var bin = [ ['Orichalcum'], ['Rapier', 'Panacea'], ['Bow'], ['Antidote', 'Cheese', 'Whip'], 
['Elixir', 'Herb'], ['Timbrel', 'Dagger', 'Boomerang'] ]; 


var message = (! bin.length) ? 

    'No items have been removed.' 

    : (bin.length === 1) ? 

     bin[0].length + ' items have been removed.' 

     : (
      for (var i = 1; i < bin.length; i++) { 
       for (var j = 0; j < bin[i].length; j++) { 
        bin[0].push(bin[i][j]); 
       } 
      }, 

      bin[0].length + ' items have been removed.' 
     ); 


alert(message); 
+4

做**不** **滥用像这样的三元。这是令人厌恶的丑陋代码。嵌套三元超越“滥用”为“种族灭绝的理由” –

+0

相关:http://stackoverflow.com/questions/34292255/short-circuit-with-a-return-statement – Xufox

+2

这里真正的问题可能是为什么这样做?与“if”相比,阅读非常困难。 。 。 else语句。此外,您还没有指出什么是和不在工作,您收到了什么输出,您期望输出什么? – CollinD

回答

3

的? :运算符是一个表达式,而不是一个语句。这意味着你不能在其中嵌入其他语句(比如for)。