select2代码的三元运算符需要说明
Posted
技术标签:
【中文标题】select2代码的三元运算符需要说明【英文标题】:Need explanation on ternary operator of select2 code 【发布时间】:2017-12-24 23:48:05 【问题描述】:在 jquery 的 select2 组件中,我在 'keypress' 事件监听器中遇到了以下代码。
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
【讨论】:
以上是关于select2代码的三元运算符需要说明的主要内容,如果未能解决你的问题,请参考以下文章