隐式地将javascript字符串解析为整数是否有任何缺点?

时间:2013-01-02 03:05:11

标签: javascript

之间的区别是什么
"2" * 1 + 5

parseInt("2") + 5

只是编写更易读的代码,或者第一种形式存在兼容性问题。

2 个答案:

答案 0 :(得分:2)

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

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

JavaScript会进行自动类型转换,如下所示:

"2" * 1 + 5 //7

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

如上文评论中所述,parseInt为基础提供了额外的论据。

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

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

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

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

答案 1 :(得分:0)

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

但是,由于您必须添加代码才能进行转换(* 1parseInt),我会从样式角度投票parseInt,因为它会影响您的意图清晰。有时很难在不使用隐式转换的情况下在javascript中保持类型。

不熟悉您的代码或使用javascript的人可能会想知道第一个表单的内容是什么。

另外,正如评论所示,parseInt速度更快,所以这是一场胜利。