什么是更好的使用:“2”.toString()=== 2.toString()或“2”== 2?

时间:2014-10-29 07:22:27

标签: javascript

我不知道最好用什么:

var s = "2";
var i = 2;
if(s.toString() === i.toString()){
    //do something
}
//OR

if(s == i){
    //do something
}

感谢您的帮助

2 个答案:

答案 0 :(得分:4)

您实际上是在比较两个不同的东西,首先,您将变量值转换为字符串并进行比较,而另一个比较则丢失一个,即您实际上并未检查这些变量的数据类型。因此,如果您将stringint的值相同,则会返回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
}

您不需要第二个号码()但是,我不知道,您可能会获得也是字符串的数据。