我不知道什么是更好的使用:什么是更好的使用:“2”.toString()=== 2.toString()或“2”== 2?
var s = "2";
var i = 2;
if(s.toString() === i.toString()){
//do something
}
//OR
if(s == i){
//do something
}
感谢您的帮助
我不知道什么是更好的使用:什么是更好的使用:“2”.toString()=== 2.toString()或“2”== 2?
var s = "2";
var i = 2;
if(s.toString() === i.toString()){
//do something
}
//OR
if(s == i){
//do something
}
感谢您的帮助
你实际上是比较两个不同的东西,第一,你是铸造这两个变量值的字符串和比较,而另一个比较失败,即你实际上没有检查这些变量的数据类型。所以如果您将string
与int
的值相比较,它将返回true。
根据我的说法,你应该使用的是===
,它不仅会比较数值,还会比较它们的数据类型,因为你使用的数据都被视为丢失。
如果您根本不考虑数据类型,那么使用==
就足够了。您不必将值转换为string
。
在你的第一个例子,如果您有任何理由获得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
}
你不需要第二个Number(),但是我不知道,你可能会得到也是字符串的数据。
我会用第一种方法,因为它确实是我们想要的。 – 2014-10-29 07:24:07
你的目标是什么? – 2014-10-29 07:24:15
我同意@Mr_Green,第一种方法更清晰,JavaScript也有一些奇怪的强制规则。 – simonzack 2014-10-29 07:24:32