toString或parseInt javascript

时间:2012-12-18 13:25:29

标签: javascript casting tostring parseint

所以今天我遇到了这种情况。我有一个整数和一个我需要比较的字符串。为了比较这两个,我要么必须toString()整数,要么将字符串解析为int。

这是我的问题,我应该选择哪一个,这两个人的表现有什么不同? (即使它很小)是否有经验法则?

这是一个代码示例:

var intI = 1;
var stringS = '1';

if (intI.toString() == stringS)
console.log('are equal');

//Or
if (intI == parseInt(stringS))
console.log('are equal');

最好是我可以将Integer声明为我知道的字符串(因为它不用于计算)。但它在网站上随处可用。

5 个答案:

答案 0 :(得分:12)

这取决于您想要的语义而不是性能。字符串“001”应该等于数值1吗?如果答案为“是”,则应将值转换为数字。如果没有,那么你应该比较为字符串。

除非你有一个正在进行数百万次此类操作的应用程序,否则不要担心这些琐碎事情的表现。

另请注意,parseInt()并不关心数字字符串是否在末尾有尾随垃圾。那是

parseInt("123skidoo", 10) === 123

true

答案 1 :(得分:1)

  

两者的表现有什么不同?

不明显。但是,这两种方法之间存在行为差异,因为parseInt还会将0011xyz等字符串转换为数字1。你想要那个吗?如果没有,你应该整理整数。

顺便说一句,如果您只使用== operator,则字符串将隐式为ToNumbered。这不允许仅以某些数字开头的字符串(如1xyz),但任何数字表示等同于1,例如1.0001

答案 2 :(得分:0)

实际上,在这种情况下你不必转换任何东西。将整数与字符串进行比较时,Javascript引擎会自动将一个转换为另一个。您可以在网络浏览器导航栏中输入javascript:alert(1 == '1');进行尝试。它将返回“true”。

答案 3 :(得分:0)

您不需要进行任何显式转换,因为默认情况下javascript会为您处理。它还取决于您要比较的语义。我不认为我们应该担心在这些微不足道的情况下的表现。

答案 4 :(得分:0)

试试这个

var intI = 1;
var stringS = '1';

将intI转换为字符串只需使用下面的内容。

var intI = 1+"";//now check the type of intI, it would be string