有什么区别
"2" * 1 + 5
和
parseInt("2") + 5
只是为了写一个更易读的代码,还是第一种形式存在兼容性问题。
parseInt
用于从字符串中获取整数。考虑以下代码:
var myString = "3 blind mice";
var myInteger = parseInt(myString); //3
JavaScript 会自动进行类型转换,所以是这样的:
"2" * 1 + 5 //7
字符串"2"
被转换为数字。
正如上面在评论中提到的,parseInt
为 base 提供了一个额外的参数。
JavaScript 有很多关于类型转换的非常奇怪的规则,有时并不清楚 JavaScript 在每种情况下会做什么。请记住,+
运算符也用于连接和加法。
如果您尝试将某些内容显式转换为数字,则可以使用Number
JavaScript 提供的构造函数。考虑到以下几点:
var myString = "2";
var myNum = Number(myString); //2
console.log(typeof myNum); //number
如果没有new
关键字,它可以用于将字符串转换为数字。虽然它确实有效,但我不确定parseInt
是否应该用于转换。只需使用Number
构造函数。
我不认为在第一种形式中使用强制转换存在兼容性问题,它是一种应该被广泛支持的语言特性。
但是,由于您必须添加代码来进行任何一种转换(* 1
vs. ),我会从风格的角度parseInt
投票,因为它使您的意图更清晰。parseInt
有时很难在不使用隐式转换的情况下直接在 javascript 中保持类型。
不熟悉您的代码或 javascript 的人可能想知道第一种形式发生了什么。
另外,正如评论中所指出的那样,parseInt
速度更快,所以这是一场全面的胜利。