我正在使用jQuery 1.7.1
我刚刚开始使用JavaScript三元运算符替换简单的if / else语句。我已经在几个地方成功地做到了。当我确信可以成功完成其他工作时,我感到很惊讶,但是无论如何我还是尝试了。
这是原始语句:
function updateItem() {
$this = $(this);
var IsChecked = $this.hasClass("IsChecked");
if (IsChecked == true){
removeItem($this);
} else {
addItem($this);
}
}
这是使用三元运算符的相同功能:
function updateItem() {
$this = $(this);
var IsChecked = $this.hasClass("IsChecked");
(IsChecked == true) ? removeItem($this) : addItem($this);
}
我很惊讶,因为我看到的所有示例都只设置了这样的变量:
x = (1 < 2) ? true : false;
我的问题是这是否是“正常”使用,并且可以在大多数JavaScript版本中使用吗?哪里会失败?还有其他不太明显的用途吗?
更新-感谢您的“真实世界”建议!!!
我使用它作为我的功能:
function updateItem() {
$this = $(this);
$this.hasClass("IsChecked") ? removeItem($this) : addItem($this);
}
(IsChecked ? removeItem : addItem)($this)。但是,要回答您的问题,是的,这很正常,使用三元运算符也没有错,只要它们在需要的情况下不损害可维护性或可读性即可。jsfiddle.net/vsB3f
if($this.hasClass("IsChecked")) removeItem($this); else addItem($this)是正确的方法。三元运算符不是针对此类情况的,而是针对诸如此类的事情foo(isChecked ? 'bar' : meow());(例如,当您关心在then / else块中所做的任何事情的“返回值”时)
$(this).hasClass("IsChecked") ? removeItem($this) : addItem($this); 我可以按一行原样理解您的代码,因此符合我的经验法则(请参见下面的文章)。为我工作。