Aar*_*ias 0 javascript variables short-circuiting
我正在编写一个小函数,它接受一个参数并尝试调用parseInt(value) || value.toUpperCase()但是它无法按预期使用某些值.
function convert(value)
{
return parseInt(value) || value.toUpperCase();
}
Run Code Online (Sandbox Code Playgroud)
一些示例输出是
convert("asdf") -> "ASDF"
convert("Car") -> "CAR"
convert("1") -> 1
convert("52") -> 52
但由于某种原因,当我输入"0"时,我得到"0"退出.我试图调用parseInt("0")并且它正确地解析0出来,但是当|| "0".toUpperCase()它与它结合时总是返回字符串"0".
唯一的借口,我能想出的是,0 || "0"总是要解决的"0",因为它处理0为未定义或为空(这我的理解是,短路计算的JavaScript才被短路undefined,null或false值).
我希望有人可以在这个问题上给我一些清晰的认识.
0是假的,所以逻辑中的另一个表达式||将被评估.这就是你得到的原因"0".你可以这样确认
1 || console.log("First");
0 || console.log("Second");
# Second
Run Code Online (Sandbox Code Playgroud)
由于1是真实的,它短路并且不执行console.log("First"),但是0是假的因此它继续并执行console.log("Second")
| 归档时间: |
|
| 查看次数: |
442 次 |
| 最近记录: |