所以今天我遇到了这种情况。我有一个整数和一个我需要比较的字符串。为了比较这两个,我要么必须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声明为我知道的字符串(因为它不用于计算)。但它在网站上随处可用。
答案 0 :(得分:12)
这取决于您想要的语义而不是性能。字符串“001”应该等于数值1
吗?如果答案为“是”,则应将值转换为数字。如果没有,那么你应该比较为字符串。
除非你有一个正在进行数百万次此类操作的应用程序,否则不要担心这些琐碎事情的表现。
另请注意,parseInt()
并不关心数字字符串是否在末尾有尾随垃圾。那是
parseInt("123skidoo", 10) === 123
是true
。
答案 1 :(得分:1)
两者的表现有什么不同?
不明显。但是,这两种方法之间存在行为差异,因为parseInt
还会将001
或1xyz
等字符串转换为数字1
。你想要那个吗?如果没有,你应该整理整数。
顺便说一句,如果您只使用==
operator,则字符串将隐式为ToNumber
ed。这不允许仅以某些数字开头的字符串(如1xyz
),但任何数字表示等同于1
,例如1.0
或001
。
答案 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