问题标签 [ternary-operator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3629 浏览

php - 我可以在 PHP 类方法返回语句中使用三元吗?

我可以这样做吗?(我目前无法测试以亲自查看)

0 投票
6 回答
6849 浏览

java - 括号是否应该始终放在三元运算符周围?

Checkstyle 抱怨以下问题:

并说括号是不必要的。

虽然没有它们,该声明当然可以正常工作,但如果有它们,它似乎更具可读性——否则,当我阅读它时,我倾向于看到:

首先,然后必须停下来考虑剩余的

部分,因为我的大脑已经走了一条路。

此外,每当我看到三元运算符时,我倾向于做同样的事情,除非它被分组在括号中。

那么:三元组周围的括号是否应该成为事实上的标准?有没有理由不把它们放在那里?

0 投票
2 回答
5315 浏览

c# - 完整的 if/else 语句与条件运算符

可能的重复:
使用条件 ?: (三元)运算符
的好处 条件运算符慢吗?

大家好,

关于不同的 if/else 语句,我有一个非常简单的问题。

除了编写更少的代码之外,与完整的 if/else 语句相比,使用条件运算符还有其他好处吗?

使用它时是否有性能提升、编译代码减少或其他任何对我有益的东西?

感谢你的帮助

马尔科

0 投票
1 回答
479 浏览

c++ - 条件运算符的“无效转换”错误

我在这一行收到编译错误:

错误:

MenuItems 是以下类的 std::vector:

mn_yes 和 mn_no 是 std::strings。

编译器是 MinGW(与 code::blocks 一起分发的版本)。

0 投票
5 回答
1742 浏览

c# - 三元运算符和 C# 中的 if 语句之间有区别吗?

我正在使用一个可为空的 DateTime 对象并遇到了一些奇怪的行为。这是一个示例函数:

据我所知,三元运算符的行应该与前面四行相同,但是VS2010给我一个编译错误,说<null>和DateTime之间不存在转换(即使有问题的对象是'DateTime ?')。关于三元运算符,我应该知道些什么,或者这(喘气?)是一个错误?

0 投票
7 回答
3404 浏览

c# - 使用条件运算符?检查空会话变量

看看这段代码:

基本上我想检查 HttpContext.Current.Session["pdfDocument"] 是否不为空,如果它不转换为布尔值,那么检查它的真假。

我试图避免嵌套 if 语句,并认为会有一种更优雅的方式来做到这一点。因此,我只对包含条件的答案感兴趣?操作员。

有小费吗?

0 投票
4 回答
1910 浏览

php - 我在哪里可以读到用“?”完成的条件。和“:”(冒号)?

可能重复:
参考 - 这个符号在 PHP 中是什么意思?

我一直在用 if/else 或一年左右的时间做条件句。查看一些新代码,我看到一个似乎使用?and:而不是 if 和 else 的条件。我想了解更多关于这方面的信息,但我不确定用谷歌搜索什么来解释它是如何工作的。我该怎么做?

0 投票
4 回答
5387 浏览

javascript - 三元(条件)运算符和样式

如果您首先讨厌三元条件运算符,则无需回复;)

我通常会看到它与赋值表达式一起使用,例如:

但是,我想用它来替换简单的代码,例如:

而是这样做:

我可能会在 JavaScript 中这样做。在上面它返回 undefined 所以它不需要赋值。我喜欢节省的空间,但想知道人们对这种类型的使用有何看法,因为我通常只看到三元与分配一起使用。

编辑:我已经看到暗示“隐藏意图”的答案。虽然经典地用在表达式中,但是这如何隐藏意图而不是在表达式中使用呢?尤其是在一种动态语言中,人们可能会看到到处都在使用三元运算符?

0 投票
8 回答
579 浏览

javascript - “条件” (? :) 运算符在 JavaScript 中是否像在 C 中一样工作?

例子:

0 投票
7 回答
13258 浏览

c# - 三元运算符 VB 与 C#:为什么将 Nothing 解析为零?

我只是朝自己的脚开枪,想知道是否有真正的理由使这种情况成为可能。
而且无论如何,为了方便未来的射手,这个问题可以保留。


假设我们在 vb.net 中有一个可为空的值:

我们想为它分配一个值,基于一个条件,并使用三元运算符,因为它是如此整洁和东西:

也就是说,如果条件是true,则使用可空性,否则使用值。
在这一点上发生了枪击事件。没有明显的原因,VB 编译器决定 and 的通用基本类型NothingIntegerInteger此时它默默地将语句转换为:


现在,如果您要在 C# 中执行此操作:

你会立即得到一个编译器错误,说它<null>不能很好地与int. 这很好,因为如果我这次采用 C# 方式,我的脚会更健康。要编译它,您必须显式编写:


现在,您可以在 VB 中执行相同的操作并获得您期望的正确空值:

但这首先需要你的脚射门。没有编译器错误,也没有警告。那是Explicit OnStrict On


所以我的问题是,为什么?
我应该把它当作编译器错误吗?
或者有人可以解释为什么编译器会这样吗?