如何将此条件逻辑转换为三元表达式?

时间:2013-06-18 17:02:27

标签: javascript jquery-plugins expression conditional-statements ternary

这是一个小的小jquery插件,它检查传入的元素是否为输入元素,如果它是空的:

$.fn.inputIsEmpty = function() {
    if (!this.is('input:text')) {
        return false;
    } else {
        return $.trim($(this).val()).length == 0;
    }
};

以上逻辑有效。所以我试着把它变成一个甜蜜的三元表达式:

$.fn.inputIsEmpty = function() {
    this.is('input:text') ? $.trim($(this).val()).length == 0 : false;
};

但它只是返回undefined - 我做错了什么?

2 个答案:

答案 0 :(得分:2)

$.fn.inputIsEmpty = function() {
   return (this.is('input:text') ? ($.trim($(this).val()).length == 0) : false);
};

答案 1 :(得分:1)

我会利用操作员短路:

return this.is('input:text') && $.trim(this.val()).length === 0;

如果this.is('input:text')false,则无需评估第二部分,因为false && any boolean将为false,无论其他布尔值如何。它就像你的if声明一样。