通过一些JS代码,我找到了类似的东西:
var a, b;
if (
(a = someFunction1(), b = someFunction2() )
){
...
}
我之前从未发现过这样的事情,我不明白做这样的事情的原因。因此,我很好奇:那个人是出于这个想法,还是我无法理解他的想法。
当我尝试检查(expression1, expression2)
之类的构造时,我发现它总是返回第二个表达式的值:
(5, 6) // 6
('strange', 'things') // 'things'
(4, undefined) // undefined
因此,如果我是编写此代码的人,我会做这样的事情:
var a = someFunction1(),
b = someFunction2();
if (b){ ... }
我的推理是否正确?
答案 0 :(得分:4)
当我尝试检查
(expression1, expression2)
之类的构造时,我发现它总是返回第二个表达式的值
是。即使没有尝试,这也是comma operator所做的。
我的推理是否正确?
是。您的代码完全相同,但更具可读性。
答案 1 :(得分:2)
你是对的,基本上是if(b)
。第一个版本的可读性很糟糕,并没有节省空间,所以将它缩小就没有任何意义。
在条件语句中分配变量是不好的做法。