在此函数中,哪些值将返回0?

mit*_*221 1 javascript

以下函数使用短路操作符0作为默认值返回:

function custNumParse(str){
    return str*1||0;
}
Run Code Online (Sandbox Code Playgroud)

我不确定这将返回第二个(我的意思是,我知道它将在str*1无法评估时true),但我不确定在乘以时哪些输入可以产生该输出1.

我知道虚假的价值观0, "", false, null, undefined, NaN,但这对我没有多大帮助.

换句话说,当我将这个函数与对象或布尔值等一起使用时,我会发生什么事情.我知道我可以测试它们,但我确信有一个更容易的方法去

关于什么是最合适的方法找到这些家伙而不测试它们的任何想法?

Roc*_*mat 5

*操作仅适用于数字,所以任何这不是一个数字(或不能转化为一个)会让str*1回报NaN.也0*1很明显0.

编辑:布尔值似乎转换为01.

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)