【问题标题】:Javascript: ternary operator inside "if" condition [duplicate]Javascript:“if”条件内的三元运算符[重复]
【发布时间】:2016-03-30 04:01:39
【问题描述】:

我找到了这段 Javacript 代码,但我无法理解在 if 条件中使用三元运算符意味着什么。

var s = 10, r = 0, c = 1, h = 1, o = 1;

if (s > r ? (c = 5, h = 2) : h = 1, o >= h)
{
  alert(1);
}

o >= h 是在“if”条件下返回以评估的结果吗? 那么在“if”条件下使用逗号呢?

【问题讨论】:

标签: javascript if-statement ternary-operator


【解决方案1】:

这实际上只是一个语法捷径。可以将其扩展为两个if 语句:

var condition;
if (s > r) {
  c = 5;
  condition = (h = 2); // another short-cut; it's essentially (h = 2, condition = true)
}
else {
  h = 1;
  condition = (o >= h);
}

if (condition) {
  alert(1);
}

使用comma 允许将两个语句转换为一个语句(因为a, b 始终计算为b,尽管ab 子表达式都在进程中计算)。

【讨论】:

  • 一个好问题是:哪段代码更易读?三元运算符快捷方式还是这个?
  • 当然,但是您认为h=2 正在测试什么?
  • 什么都没有;它总是真实的。在一个语句中将2 分配给h 和将condition 设置为true 是另一种捷径。
【解决方案2】:

当你运行时,这段代码不会出错......基本上......所做的是运行它找到的三元运算 (c=5,h=2),这不是在 if 语句中写入的条件。 .
因此条件不会满足并且不会 alert(1);

【讨论】:

    猜你喜欢
    • 2022-12-06
    • 2015-06-05
    • 2017-05-10
    • 1970-01-01
    • 2021-03-31
    • 2011-03-06
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    相关资源
    最近更新 更多