一尘不染

具有函数的JavaScript三元运算符示例

javascript

我正在使用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);
}

阅读 244

收藏
2020-05-01

共1个答案

一尘不染

呵呵,您的问题中有一些令人兴奋的三元语法用法。我最喜欢最后一个…

x = (1 < 2) ? true : false;

这里完全不需要使用三进制-您可以简单地编写

x = (1 < 2);

同样,三元语句的条件元素始终被评估为布尔值,因此您可以表示:

(IsChecked == true) ? removeItem($this) : addItem($this);

简单如下:

(IsChecked) ? removeItem($this) : addItem($this);

实际上,我也将删除该IsChecked临时文件,使您拥有:

($this.hasClass("IsChecked")) ? removeItem($this) : addItem($this);

至于这是可以接受的语法,那肯定是!这是在不影响可读性的情况下将四行代码简化为一行的好方法。我唯一要提的建议是避免在同一行上嵌套多个三元语句(这就是疯狂!)

2020-05-01