if语句的内容究竟是什么?
如果我有:
if(setX(), x === 5)
这会被解释为:
if((setX(), x) === 5) // which is the same as:
setX(); if(x === 5)
或者它被解释为:
if((setX()), (x === 5))
(这最终是一回事,但我仍然对语法感到好奇。)
答案 0 :(得分:1)
逗号有least priority,所以:
setX()
将首先评估x === 5
将被评估为第二个if
语句检查x === 5
答案 1 :(得分:1)
逗号运算符计算其两个操作数并返回右操作数的值。因此,if语句将是在setX()函数之后执行的x === 5测试的结果。
这是否是一个好的编程风格然而有争议....: - )
答案 2 :(得分:1)
这些括号内有三件事情按顺序发生:
一步一步采取的代码:
// setup
function setX(){
return 3;
}
x = 4;
// steps
if (setX(),x === 5)
// evaluate function call
if (3,4 === 5)
// evaluate equality comparison
if (3,false)
// evaluate comma operator
if (false)
// jump to the appropriate code branch
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence