4

有什么区别

"2" * 1 + 5

parseInt("2") + 5

只是为了写一个更易读的代码,还是第一种形式存在兼容性问题。

4

2 回答 2

2

parseInt用于从字符串中获取整数。考虑以下代码:

var myString = "3 blind mice";
var myInteger = parseInt(myString); //3

JavaScript 会自动进行类型转换,所以是这样的:

"2" * 1 + 5 //7

字符串"2"被转换为数字。

正如上面在评论中提到的,parseInt为 base 提供了一个额外的参数。

JavaScript 有很多关于类型转换的非常奇怪的规则,有时并不清楚 JavaScript 在每种情况下会做什么。请记住,+运算符也用于连接和加法。

如果您尝试将某些内容显式转换为数字,则可以使用NumberJavaScript 提供的构造函数。考虑到以下几点:

var myString = "2";
var myNum = Number(myString); //2
console.log(typeof myNum); //number

如果没有new关键字,它可以用于将字符串转换为数字。虽然它确实有效,但我不确定parseInt是否应该用于转换。只需使用Number构造函数。

于 2013-01-02T03:15:37.170 回答
0

我不认为在第一种形式中使用强制转换存在兼容性问题,它是一种应该被广泛支持的语言特性。

但是,由于您必须添加代码来进行任何一种转换(* 1vs. ),我会从风格的角度parseInt投票,因为它使您的意图更清晰。parseInt有时很难在不使用隐式转换的情况下直接在 javascript 中保持类型。

不熟悉您的代码或 javascript 的人可能想知道第一种形式发生了什么。

另外,正如评论中所指出的那样,parseInt速度更快,所以这是一场全面的胜利。

于 2013-01-02T03:21:33.287 回答