es6中Number.parseInt和Math.trunc使用和功能上有什么区别吗?

在MDN上两个函数的解释分别为:


Math.trunc() 方法会将数字的小数部分去掉,只保留整数部分

parseInt() 函数解析一个字符串参数,并返回一个指定基数的整数 (数学系统的基础)。


写了一点测试代码:


console.log(Number.parseInt(-1.20));

console.log(Math.trunc(-1.20));

console.log(Number.parseInt(100.20));

console.log(Math.trunc(100.20));

console.log(Number.parseInt('中文'));

console.log(Math.trunc('中文'));

运行结果完全一致:

https://img1.mukewang.com/5c4bf6110001476800770132.jpg

查了一下各自的api,Number.parseInt功能上完全覆盖Math.trunc,ES6中增加这个Math.trunc有什么用?

手掌心
浏览 933回答 1
1回答

慕勒3428872

在数字极大或是极小时候,会自动采用科学计数法时候,parseInt是会有问题的。console.log(parseInt(6.022e23)); // 6console.log(Math.trunc(6.022e23)); // 6.022e+23虽然功能上可能对于部分结果一致,但是其作用是不一样的。parseInt在实际运用上经常会出一些问题,比如0X或是0开头就会出现解析为十六进制或八进制的问题,虽然你可能本意是转换为十进制,但是后端传递值或是用户输入并不会和你想象的一样。Math.trunc在ES6更多的是为了补足floor,round,ceil这一系列的方法,以及可想而知,在Math.trunc适用的领域,其性能会比parseInt好不少。从另外一个角度上来说,如果给你一个能够完成所有功能的函数,但是需要传递很多不同参数,或是命名功能分类清晰的多种函数,去完成一个项目,你会选择哪种呢?个人而言绝对选择是后一种。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript