为什么"\n"是Javascript中的数字"NaN"

Der*_*Jan 3 javascript parsing nan control-characters

在Chrome和Firefox上的JavaScript中:

isNaN( "\n" )给出false
parseFloat ( "\n" )NaN

同样是产生了\t,\r\f".

  • \n 是一个数字
  • 解析\n给你不是数字.
  • 转义字符,如NULL字节\0,\\并按\"预期工作.
  • 我们知道这NaN是一个数字,只是不能代表任何其他价值
  • \n数字也是如此,这是不可表示的.

为什么浏览器会这样实现?

小智 7

因为toNumber只包含空格(或者如果它是空的)的任何字符串的转换会导致0.

console.log(Number("\n")); // 0
Run Code Online (Sandbox Code Playgroud)

这些parseInt/Float方法实际上需要转换一些数字内容,尽管它允许前导空格和尾随垃圾.

console.log(parseFloat("   123.45odsifjj")); // 123.45
Run Code Online (Sandbox Code Playgroud)

所述toNumber转化是在定义9.3.1 ToNumber施加到串类型.

StringNumericLiteral为空或仅包含空格将转换为+0