2017-07-19 4 views
-3

jqueryのselect2コンポーネントで、 'keypress'イベントリスナーで次のコードが発生しました。select2コードの3進演算子に関する説明が必要

a.isOpen() ? c === d.ESC || c === d.TAB || c === d.UP && b.altKey ? (a.close(), 
       b.preventDefault()) : c === d.ENTER ? (a.trigger("results:select", {}), 
       b.preventDefault()) : c === d.SPACE && b.ctrlKey ? (a.trigger("results:toggle", {}), 
       b.preventDefault()) : c === d.UP ? (a.trigger("results:previous", {}), 
       b.preventDefault()) : c === d.DOWN && (a.trigger("results:next", {}), 
       b.preventDefault()) : (c === d.ENTER || c === d.SPACE || c === d.DOWN && b.altKey) && (a.open(), 
       b.preventDefault()) 

誰かがこの複雑な構造を説明できますか?

答えて

1

3進数はifおよびelse文に変換され、それらを相互に入れ子にすることができます。

これはおおよそこれに翻訳されます。あなたはウサギの穴を倒し続けることができ、より多くのネストされたifとelse文に分けることができます

if(a.isOpen()){ 

    if(c === d.ESC || c === d.TAB || c === d.UP && b.altKey){ 
     a.close(); 
     b.preventDefault(); 
    } 
    else{ 
     if(d.ENTER){ 
      a.trigger("results:select", {}; 
      b.preventDefault(); 
     } 
     else{ 

      if(d.SPACE && b.ctrlKey){ 
       a.trigger("results:toggle", {}); 
       b.preventDefault(); 
      } 
      else{ 

       if(c === d.UP){ 
        a.trigger("results:previous", {}); 
        b.preventDefault() 
       } 
       else{ 
        ...and so on and so on 
       } 
      } 
     } 
    } 

}