字符串转化数字问题
以下代码运行结果如何
console.log("1"+2);
没错,是12。。
最近项目中遇到了一系列数值计算问题,写着写着就突然发现出现了字符串。
那应该怎样转换呢?
我们知道,js有两个全局函数parseInt()和parseFloat()两个函数。
虽然这两个函数可以转化,但确实是存在缺陷的。
parseInt("1.2");//1.2
parseFloat("1.2");//1.2
parseInt("1.jpg");//1
parseFloat("1.jpg");//1
- 解决办法
既然这样转化存在一定的风险,那应该怎样转换呢?
我从一些博客上找到了一些方法,自己也尝试了一些。
比如以下几种:
console.log("1"+2);//"12"
console.log(+"1"+2);//3
console.log("1"/1+2);//3
console.log("1.jpg"/1+2);//NaN,这种情况下可以通过判断NaN来处理
console.log("1.2/1+2");//3.2
实际项目中“1.jpg”这种字符串转化数值的时候很少,因为输入时一般就要解决输入检测的问题,我比较喜欢使用的时一元运算符+,+”1”+2=3,一般来说效率比较高。
- 下面是W3C的描述
Over!