javascript parseInt()函数的具体实现

为什么 parseInt(“.1”)会返回NaN啊
为什么 parseInt(“.1”)会返回NaN啊
为什么 parseInt(“.1”)会返回NaN啊

用parseFloat,parseInt前面开始的字符必须是数字,后面可以非数字,会自动丢弃

http://www.w3school.com.cn/jsref/jsref_parseInt.asp , 去看一下参考手册上对parseInt()的说明,注意(提示和注解)部分,上面说只有字符串中的第一个数字会被返回,我想应该是parseInt()在转化时,字符串中的第一个字符必须是数字!

这就好比alert(parseInt("123ada")) 只会弹出123 ,也就是说当解析字符串时,遇到第一个不为数字的值时,结束解析,而 . 点不是数字,故解析为NaN

NaN是Not a Number的简写。.1不是合法的整数。

parseInt :把字符串转成整数;从头开始扫描字符串,跳过前面的空白字符,
碰到第一个字符,如果第一个子字符不是数字或者不是负号,直接转成Nan
如果第一个是数值或者负号,继续向后扫面,直到碰到第一个非数值的字符或者字符串结束。然后把扫到的数字转成数值类型
console.log('------------------parseInt-----------------')
console.log(parseInt('123ava')); //123
console.log(parseInt('-123ava')); //-123
console.log(parseInt(' asd132')); //nan
console.log(parseInt(' 132asd')); //123
console.log(parseInt('')); //nan
console.log(parseInt('213.312.321')); //213

语法:parseInt(string, radix);


参数


string
要被解析的值。如果参数不是一个字符串,则将其转换为字符串(使用 ToString 抽象操作)。字符串开头的空白符将会被忽略。




radix
一个介于2和36之间的整数(数学系统的基础),表示上述字符串的基数。比如参数"10"表示使用我们通常使用的十进制数值系统。始终指定此参数可以消除阅读该代码时的困惑并且保证转换结果可预测。当未指定基数时,不同的实现会产生不同的结果,通常将值默认为10。




返回值
返回解析后的整数值。 如果被解析参数的第一个字符无法被转化成数值类型,则返回 NaN。



更多相关的内容,你可以参考:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/parseInt