Javascript 为什么Number(null)返回0,parseFloat(null)返回NaN?

Javascript 为什么Number(null)返回0,parseFloat(null)返回NaN?,javascript,Javascript,我正在尝试编写一个助手函数,该函数将从一个字符串转换为一个数字 由于我不确定是使用parseFloatstr还是Numberstr,我仔细检查了它们如何处理可能存在问题的参数 见: console.logNumbernull;//0 console.logparseFloatnull;//楠 console.logparseIntnull;//楠 console.logisNaNnull;//falseNumber构造函数试图将参数强制为Number。所以空字符串、false、null和所有f

我正在尝试编写一个助手函数,该函数将从一个字符串转换为一个数字

由于我不确定是使用parseFloatstr还是Numberstr,我仔细检查了它们如何处理可能存在问题的参数

见:

console.logNumbernull;//0 console.logparseFloatnull;//楠 console.logparseIntnull;//楠 console.logisNaNnull;//falseNumber构造函数试图将参数强制为Number。所以空字符串、false、null和所有falsy值都变为0

同样,Numbertrue将返回1。数字'some string'将为NaN,因为'some string'无法转换为数字

注意,正如注释中指出的,NumberRunDefined在算术运算中是NaN而不是0。读这里

请阅读此处的详细信息:

数字构造函数尝试将参数强制为数字。所以空字符串、false、null和所有falsy值都变为0

同样,Numbertrue将返回1。数字'some string'将为NaN,因为'some string'无法转换为数字

注意,正如注释中指出的,NumberRunDefined在算术运算中是NaN而不是0。读这里


请在此处阅读更多信息:

NaN代表非数字。ParseFloat和ParseInt返回实数和整数,因此这类似于函数返回的错误。另一方面,数字表示对象的值。例如,Numberfalse将输出0。

NaN表示非数字。ParseFloat和ParseInt返回实数和整数,因此这类似于函数返回的错误。另一方面,数字表示对象的值。例如,Numberfalse将输出0。

原因似乎与parseInt和parseFloat的工作方式非常微妙:

如果传递给parseInt/parseFloat的参数不是null不是的字符串,那么它调用toString,返回[object Undefined]

如果第一个字符无法转换为数字,则parseInt返回NaN。


原因似乎很微妙,因为parseInt和parseFloat是如何工作的:

如果传递给parseInt/parseFloat的参数不是null不是的字符串,那么它调用toString,返回[object Undefined]

如果第一个字符无法转换为数字,则parseInt返回NaN。

parseInt/Float将其参数转换为字符串,从左侧逐字符读取,并尝试根据找到的内容生成一个数字。由于Stringnull为null且十进制数不能以n开头,因此parseIntnull将为NaN。如果提供不同的基数,其中n、u和l是数字,则结果将不同: console.logparseIntnull,32 parseInt/Float将其参数转换为字符串,从左侧逐字符读取,并尝试根据找到的内容生成一个数字。由于Stringnull为null且十进制数不能以n开头,因此parseIntnull将为NaN。如果提供不同的基数,其中n、u和l是数字,则结果将不同:
console.logparseIntnull,它是标准的一部分。请阅读文件以使用regexp/^-?\d*\.?\d*$/.TestStringWithNumbers进行验证此问题已就此得到回答!==。删除解释,最好在下面的答案中。这是标准的一部分。请阅读文件以使用regexp/^-?\d*\.?\d*$/.TestStringWithNumbers进行验证此问题已就此得到回答!==。删除了解释,在下面的答案中更好。顺便说一句,它不是构造函数!Numberundefined是NaN,不是0。谢谢@georg,我已经修复了它。顺便说一句,它没有用作构造函数!Numberundefined是NaN,不是0。谢谢@georg,我已经解决了。