我不知道最好用什么:
var s = "2";
var i = 2;
if(s.toString() === i.toString()){
//do something
}
//OR
if(s == i){
//do something
}
感谢您的帮助
答案 0 :(得分:4)
您实际上是在比较两个不同的东西,首先,您将变量值转换为字符串并进行比较,而另一个比较则丢失一个,即您实际上并未检查这些变量的数据类型。因此,如果您将string
与int
的值相同,则会返回true。
根据我的说法,你应该使用的是===
,它不仅会比较值,还会比较它们的数据类型,因为你使用的那些都被视为丢失。
如果您根本不考虑数据类型,那么使用==
就足够了。您不必将值转换为string
。
答案 1 :(得分:1)
在你的第一个例子中,如果出于任何原因你得到一个带空格的2,它将评估为假(即使用==):
var s = " 2"; // 2 with a sneaky space
var i = 2;
if(s.toString() === i.toString()){ // will be false
//do something
}
我个人更喜欢使用===,但我会将值更改为整数,而不是字符串。
var s = " 2"; // 2 with a sneaky space again
var i = 2;
if(Number(s) === Number(i)){ // will be true
//do something
}
您不需要第二个号码()但是,我不知道,您可能会获得也是字符串的数据。