如果我做类似return a ? b : c;
或return a && a2 && a3;
它是否可以被评估为公正return a
,然后函数在评估其余部分之前立即返回?
如果我做类似return a ? b : c;
或return a && a2 && a3;
它是否可以被评估为公正return a
,然后函数在评估其余部分之前立即返回?
return
是语句,不是表达式。所以它永远不会被你的想法误解。
该语句始终采用这种形式return [some expression];
(并且表达式是可选的)。表达式(如果存在)首先被评估,其值绑定到函数的返回值。
为了更清楚地说明这一点,我将稍微重申一下这个问题:
return a ? b() : c();
return a && a2() && a3();
在第一种情况下,将调用其中一个b
或c
,但不会调用另一个。
在第二种情况下,如果a
为假,则既不a2
也a3
不会被调用。如果a2
返回 false,a3
则不会被调用。
在return a && a2 && a3;
中,如果a
为假,则无需计算表达式的其余部分。结果总是错误的。所以a2
并a3
不会被评估。这称为“短路”。