请原谅我发布另一个答案,但我只是通过谷歌搜索来到这里,并没有找到我想要的所有详细信息。在 Node.js 中运行以下代码:
var vals = ["1", "1.1", "0", "1.1abc", "", " ", null];
for(var i = 0; i < vals.length; i++){
var ifTest = false;
if(vals[i])
{
ifTest = true;
}
console.log("val=" + vals[i] + ", Number()=" + Number(vals[i])+ ", parseFloat()=" + parseFloat(vals[i]) + ", if()=" + ifTest);
}
给出以下输出:
val=1, Number()=1, parseFloat()=1, if()=true
val=1.1, Number()=1.1, parseFloat()=1.1, if()=true
val=0, Number()=0, parseFloat()=0, if()=true
val=1.1abc, Number()=NaN, parseFloat()=1.1, if()=true
val=, Number()=0, parseFloat()=NaN, if()=false
val= , Number()=0, parseFloat()=NaN, if()=true
val=null, Number()=0, parseFloat()=NaN, if()=false
一些值得注意的要点:
- 如果在尝试转换为数字之前使用 if(val) 进行保护,则 parseFloat() 将返回一个数字,除非是空格。
- Number 在所有情况下都返回一个数字,除了空格以外的非数字字符。
请随意添加我可能遗漏的任何测试用例。