在if语句的条件内分配变量的值

时间:2015-04-02 13:08:26

标签: javascript

在学习ES6的过程中,我偶然发现了这段代码:

for (let conversion of conversions) {
  let result
  if ((result = conversion(data[i], orig[i])) !== undefined) {
    console.log(result)
    data[i] = result
  }
}

我花了几分钟才明白if if语句,并意识到result的值已经分配到那里。

所以我的问题是,正在做同样的事情吗?

  let result = conversion(data[i], orig[i])
  if (result !== undefined) {
    console.log(result)
    data[i] = result
  }

在哪种情况下,我应该像第一个例子那样分配变量的值?

1 个答案:

答案 0 :(得分:4)

  

正在做同样的事情吗?

是的,let foo; if ((foo = bar) === baz)let foo = bar; if (foo === baz)

相同
  

在哪种情况下,我应该像第一个例子那样分配变量的值?

如果你想在代码高尔夫中做一个惊人的单线。

在循环条件下偶尔编写这样的内容非常有用,因此您不必重复代码,例如考虑

foo = bar();
while (false !== foo) {
    // ..
    foo = bar();
}

VS

while (false !== (foo = bar())) {
    // ..
}

仅为if执行此操作