很抱歉问这么一个愚蠢的人,但这是啥? [复制]
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<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;
仍然是一个语法错误。以上是关于很抱歉问这么一个愚蠢的人,但这是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章