很抱歉问这么一个愚蠢的人,但这是啥? [复制]

Posted

技术标签:

【中文标题】很抱歉问这么一个愚蠢的人,但这是啥? [复制]【英文标题】: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

【问题讨论】:

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

以上是关于很抱歉问这么一个愚蠢的人,但这是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 的地理位置

!= null 和 !== null 有啥区别? [复制]

xml 使用 sax 解析器从子标签解析数据

访问html表中带空格的json对象

Javascript 中的 !function 是啥意思? [复制]

?打印心形符号时