以下函数使用短路操作符0
作为默认值返回:
function custNumParse(str){
return str*1||0;
}
Run Code Online (Sandbox Code Playgroud)
我不确定这将返回第二个(我的意思是,我知道它将在str*1
无法评估时true
),但我不确定在乘以时哪些输入可以产生该输出1
.
我知道虚假的价值观0, "", false, null, undefined, NaN
,但这对我没有多大帮助.
换句话说,当我将这个函数与对象或布尔值等一起使用时,我会发生什么事情.我知道我可以测试它们,但我确信有一个更容易的方法去
关于什么是最合适的方法找到这些家伙而不测试它们的任何想法?
该*
操作仅适用于数字,所以任何这不是一个数字(或不能转化为一个)会让str*1
回报NaN
.也0*1
很明显0
.
编辑:布尔值似乎转换为0
或1
.
false * 1 === 0
true * 1 === 1
Run Code Online (Sandbox Code Playgroud)
编辑2:具有数值的字符串也将被转换
"12" * 1 === 12
"0" * 1 === 0
Run Code Online (Sandbox Code Playgroud)
编辑3:小心数组(它们被转换为字符串,然后转换为整数).
[] * 1 === 0
[2] * 1 === 2
[1,2] * 1 === NaN
Run Code Online (Sandbox Code Playgroud)