Falsy?&&运算符如何使0返回0而不是NaN?

Cok*_*her 1 javascript return-type return-value nan

我读到有时候&&运算符用于"短路"JavaScript,认为返回值0为0而不是NaN,因为0是JavaScript中的错误数字.我一直在四处寻找这一切意味着什么.有人可以向外行解释吗?

例如:

function sign(number) {    
    return number && number / Math.abs(number); }
Run Code Online (Sandbox Code Playgroud)

如果number为0,则返回0.

Que*_*tin 6

这听起来像我之前看到的答案,但现在找不到(链接会有所帮助),但你在这里得到了错误的结局.

鉴于以下情况:

foo = 0 ;
bar = foo && 2 / foo;
Run Code Online (Sandbox Code Playgroud)

在第二行,将评估foo.它是0错误的价值.&&(foo)的左侧将被返回并分配给bar.

现在,如果我们有foo = 1:

foo = 1 ;
bar = foo && 2 / foo;
Run Code Online (Sandbox Code Playgroud)

再次,foo将进行评估.这是一个真正的价值,因此&&将评估并返回右侧.2 / foo2这样2被分配到bar.

"短路"只是意味着只要部分&&失败,它就会返回失败的部分而不对右边的任何东西进行评估.