【问题标题】:Ternary operator with return statements JavaScript [duplicate]带有返回语句的三元运算符 JavaScript [重复]
【发布时间】:2013-10-17 23:47:49
【问题描述】:

如果选择了下拉列表中的选项,我需要返回 true 或 false。

这是我的代码:

var active = sort.attr('selected') ? return true : return false;

我收到第一个 return 出乎意料的错误。

为什么?

【问题讨论】:

  • 条件 运算符需要表达式,而不是语句。 return sort.attr("selected") ? true : false。或者只是做return !!sort.attr("selected");
  • 由于选择的 property 是布尔值,最好这样做:return sort.selected
  • @RobG: sort 似乎是一个 jQuery 对象。
  • 那么sort.prop(selected) 更有可能是需要的。
  • 其实sort是一个Cheerio对象。我正在研究一些 Node.js 服务器端的东西,我们使用 Cheerio 而不是 jQuery。它们共享许多相同的功能并且行为相似,但 Cheerio 更苗条和更快,因为它省去了很多 DOM 操作方法。如果我一直在使用 jQuery,prop 可能会起作用,遗憾的是,它没有。 :(

标签: javascript jquery ternary


【解决方案1】:

您可以像这样从 javascript 中的三元运算符返回:

return sort.attr('selected') ? true : false;

【讨论】:

  • 技术上正确并回答了 OP 的问题,但不是 OP 实际需要的 :-)
  • 但是对于从谷歌进来的人来说是完美的答案;)
  • 这个答案应该被接受>_
  • 来自谷歌,我想看看是否有可能只在否定的情况下返回。 IE。分配一个真值或返回假。
【解决方案2】:

为什么不只是这个?

 return sort.attr('selected');

【讨论】:

    【解决方案3】:

    您不能将 return 语句分配给变量。如果您希望为active 分配值truefalse,只需删除returns:

    var active = sort.attr('selected') ? true : false;
    

    或者更好:

    var active = sort.prop('selected');
    

    因为.prop 总是返回truefalse,不管初始标签属性如何。

    【讨论】:

    • 由于 jQuery attr 方法返回一个字符串或未定义(这与 W3C DOM getAttribute 方法总是返回一个字符串不一致)它测试实际返回值可能比依赖布尔转换更好。
    • 是的。我已经简化了对我认为 OP 真正想知道的内容的回答。
    【解决方案4】:

    来自文档:

    语法
    condition ? expr1 : expr2
    参数
    条件(或条件) 计算结果为真或假的表达式。
    expr1, expr2
    具有任何类型值的表达式。

    注意Expressions with values of any type.,return xxx不是表达式。

    来自维基百科:

    表达式是一个句法结构,它必须是格式良好的:允许的操作符必须在正确的地方有正确数量的输入,组成这些输入的字符必须是有效的,有明确的操作顺序,等等。违反语法规则的符号字符串格式不正确,不是有效的数学表达式。

    因此,在您的情况下,您可以使用:

    return sort.attr('selected') ? true : false
    

    【讨论】:

      【解决方案5】:

      只是对您的代码的评论:

      > sort.attr('selected')
      

      似乎正在使用 jQuery attr 方法,该方法用于尝试猜测您想要什么并返回属性或属性。我认为在最近的版本中它总是返回属性。

      无论如何,selected 属性的存在只意味着该项目(一个选项元素?)是 default 选择的选项,并不意味着它是当前选择的选项。为此,您需要选择的 property (jQuery prop 方法)。由于 selected 属性是一个布尔值:

      > sort.attr('selected') ? true : return false;
      

      可以是:

       sort.prop('selected');
      

      或者没有 jQuery:

       optionElement.selected;
      

      【讨论】:

        猜你喜欢
        • 2019-09-28
        • 2012-08-28
        • 2020-05-21
        • 2019-12-30
        • 1970-01-01
        • 1970-01-01
        • 2021-09-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多