parseInt()
函数和 Math.floor()
在JavaScript中用于取整,但它们之间有一些关键的区别:
1.数据类型转换:
parseInt()
是一个全局函数,它可以将字符串解析为整数。如果字符串以数字开头,它会继续解析直到遇到非数字字符,并返回整数部分。如果字符串不是以数字开头,它会返回NaN
。Math.floor()
是Math
对象的一个方法,它接受一个数字作为参数,并返回小于或等于这个数的最大整数。
2.处理非数字字符串:
parseInt()
在遇到非数字字符时会停止解析,并返回已经解析的整数部分。如果字符串不是有效的数字,它会返回NaN
。Math.floor()
在遇到非数字字符串时会抛出错误,因为它期望的是一个数字。
3.处理浮点数:
parseInt()
解析浮点数时,会返回整数部分,忽略小数部分。Math.floor()
会向下取整,即它会去掉小数部分,只保留整数部分。
4.返回值:
parseInt()
返回一个整数或NaN
。Math.floor()
返回一个整数或-Infinity
(如果参数小于0
)。
5.性能:
parseInt()
在处理整数时通常比Math.floor()
更快,因为它不需要进行数学运算。
6.使用场景:
- 从字符串中提取整数部分,并且不关心小数部分,
parseInt()
是合适的选择。 - 进行数学运算,尤其是向下取整,或者处理负数,
Math.floor()
是更好的选择。
看看代码实例:
parseInt('123.45'); // 返回 123
Math.floor(123.45); // 返回 123
parseInt('123.99'); // 返回 123
Math.floor(123.99); // 返回 123
parseInt('-123.45'); // 返回 -123
Math.floor(-123.45); // 返回 -124
parseInt('abc'); // 返回 NaN
Math.floor('abc'); // 抛出错误
在这个例子中,parseInt()
总是返回整数部分,而 Math.floor()
会根据数字的正负来决定是向上还是向下取整。对于非数字字符串,parseInt()
返回 NaN
,而 Math.floor()
会抛出错误。