2017-07-19 67 views
-3

在jquery的select2組件中,我在'keypress'事件監聽器中遇到以下代碼。需要對select2代碼的三元運算符的解釋

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

三元組翻譯成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 
       } 
      } 
     } 
    } 

}