【问题标题】:Sorry to ask such a dumb one, but what is this? [duplicate]很抱歉问这么一个愚蠢的人,但这是什么? [复制]
【发布时间】:2015-05-13 11:01:32
【问题描述】:

最近我在code 中遇到了一条奇怪的线(第二个答案,找不到直接链接到答案的方法)。
就是这样:

reverse = !reverse ? 1 : -1;

嗯,我想具体是boolean ? option : option;的用法

到目前为止,这似乎是我从未遇到过的任何事情。我在谷歌找不到它!请解释一下这是什么,语法是什么以及如何使用它,因为我很想知道这是什么,因为它看起来像一些高级智能东西......

这是一个 if-else 语句吗?感谢您阅读并回答! :D

【问题讨论】:

  • 谷歌搜索 ? 诚然,有点困难。但它是一个运算符,所以试试Javascript operators,你可能会找到你要找的东西。即便如此,它也有点被埋没了。我得到的前两个结果甚至都没有(但那是你的 W3Schools)。第三个(也是 W3Schools,但他们的参考页面 - 确实有)。 MDN 有,但它被埋在“特殊”运算符部分。
  • @MattBurland 谢谢,我的问题已经回答并标记为重复 :( 无论如何谢谢!
  • @TheSuperCuber:我知道它已经得到了回答,我试图提出一些更好的方法来找到答案,因为在谷歌上搜索? 并得到任何有意义的结果确实很困难。在 StackOverflow 上甚至很难做到,就搜索而言,这是一个边缘情况。无论哪种方式,您确实需要一个更好的问题标题。

标签: javascript


【解决方案1】:

这是一个三元(条件)表达式:

var result = condition ? "true result" : "false result";

例子:

// since 1 is less than 2 result = "It's less!"
var result = 1 < 2 ? "It's less!" : "It's more!";

【讨论】:

  • 还测试了alert(1&lt;2 ? "Hi" : "Bye"); 并且有效。谢谢大家,因为我完全不知道! :D
【解决方案2】:

? :ternary operator。发明它是为了简化这样的事情:

if (booleanExpression) {
    var x = expression1;
} else {
    var x = expression2;
}

所以上面会变成:

var x = booleanExpression ? expression1: expression2;

它们是等价的,但使用三元运算符更简洁一些。我经常看到这用于条件赋值或只是使if-else 子句更紧凑/需要更少的击键。在您给出的示例中,我想它用于根据提供给模块的参数或标志有条件地反转某些集合。

【讨论】:

  • 应该是booleanExpression ? expression1 : expression2。条件运算符不能有其真假分支的语句。例如,您不能使用true ? var x = 1; var x = -1;。这是无效的语法。
  • @AaditMShah 是的,你可以,但你应该这样做true ? var x=1*:* var x=-1;
  • @TheSuperCuber 不。你不能。Ctrl + Shift + I 并将true ? var x = 1; var x = -1; 粘贴到控制台中。它会给你一个语法错误。
  • @AaditMShah 你还是犯了同样的错误,看看我的代码,我用**突出了你的错误。你应该在语句之间使用:,而不是;
  • @TheSuperCuber 还是语法错误。是的,我承认当我使用分号而不是冒号时我打错了。但是,这个论点仍然有效。条件运算符是一个运算符(即它是一个表达式)。表达式中不能有语句。因此true ? var x = 1 : var x = -1; 仍然是一个语法错误。
猜你喜欢
  • 2015-02-12
  • 2015-06-12
  • 2021-11-18
  • 2013-08-14
  • 2021-01-23
  • 1970-01-01
  • 2021-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多