当字符串包含非数字字符时,parseFloat()如何工作?

viy*_*ncs 3 javascript dom

我在执行时遇到问题parseFloat()- 我不明白为什么会产生以下输出:

document.write(parseFloat("6e2") + "<br />"); //output is 600 why?
document.write(parseFloat("6b2") + "<br />"); //output is 6 why?
document.write(parseFloat("6c2") + "<br />"); //output is 6 why?
Run Code Online (Sandbox Code Playgroud)

你能告诉我脚本是如何工作的吗?

Ada*_*kis 12

6e2 产生600,因为它将您的输入视为科学记数法.

6e2 == 6 x 10 2 == 600

另外两个产生6因为parseFloat解析6,然后得到输入它不能转换为数字,所以它停止,并返回到目前为止找到的结果.

每个MDN:

parseFloat是一个顶级函数,不与任何对象关联.

parseFloat解析其参数,一个字符串,并返回一个浮点数.如果遇到符号(+或 - ),数字(0-9),小数点或指数以外的字符,则返回到该点的值,并忽略该字符和所有后续字符.允许前导和尾随空格.

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

出于算术目的,NaN值不是任何基数中的数字.您可以调用isNaN函数来确定parseFloat的结果是否为NaN.如果将NaN传递给算术运算,则运算结果也将是NaN.