我正在使用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); }
呵呵,您的问题中有一些令人兴奋的三元语法用法。我最喜欢最后一个…
这里完全不需要使用三进制-您可以简单地编写
x = (1 < 2);
同样,三元语句的条件元素始终被评估为布尔值,因此您可以表示:
(IsChecked == true) ? removeItem($this) : addItem($this);
简单如下:
(IsChecked) ? removeItem($this) : addItem($this);
实际上,我也将删除该IsChecked临时文件,使您拥有:
IsChecked
($this.hasClass("IsChecked")) ? removeItem($this) : addItem($this);
至于这是可以接受的语法,那肯定是!这是在不影响可读性的情况下将四行代码简化为一行的好方法。我唯一要提的建议是避免在同一行上嵌套多个三元语句(这就是疯狂!)