2015-12-15 41 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)。