【发布时间】:2014-05-01 01:04:12
【问题描述】:
参考Shorten code using Ternary Operators 中提供的答案,我想知道为什么不推荐以下三元。
$('#myID')[(myVar1 === myVar2) ? 'addClass' : 'removeClass']('myClass');
建议的答案是:
$('#myID').toggleClass('myClass', myVar1 === myVar2);
为了澄清,我理解后者更好,因为它利用第二个参数来进行切换类进行评估。我想知道的是,第一个示例是否通常不推荐,因为它的可读性或其他一些因素。还有,第一个三元有特殊的名字吗?我很好奇它是否被称为特殊的东西,以防我不得不再次搜索它。
非常感谢!
【问题讨论】:
-
IMO,第一个更难阅读和理解(需要更多思考才能识别它试图做什么)。仅供参考,第二个有问题。这工作正常:
$('#myID').toggleClass('myClass', myVar1 === myVar2); -
这不是一个“复杂”的三元;它只是一个不需要的三元组。第一种方法很好,但它不必要地冗长,尤其是当存在像
$.fn.toggleClass这样的方法时。对于它的价值,您的比较不需要括号。 -
它的可读性和可读性是巨大的。另外 - 这是非常基于意见的。
-
@jfriend00 - 谢谢,修正了我的错字。我也同意可读性问题。
-
@JonathanSampson,我想不出一个类似的“切换式”代码来写我的问题。我的问题更多的是试图更好地理解第一个中看到的语法。