2014-10-29 5 views
3

내가 사용하는 것이 좋습니다 모르는 :"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 
} 

덕분에 당신은 실제로 두 개의 물건을 비교하는

+1

정확히 우리가 원하는 것을 수행하기 때문에 나는 첫 번째 접근 방식을 택할 것입니다. –

+0

당신의 목표는 무엇입니까? –

+0

나는 @Mr_Green에 동의한다. 첫 번째 접근법은 훨씬 명확하다. 자바 스크립트에는 규칙을 강제로 적용하는 규칙이있다. – simonzack

답변

4

도움을 위해, 먼저, 당신은 문자열로 변수 값을 모두 캐스팅 및 비교, 그리고 다른 비교가 하나 잃게됩니다 즉 당신은 실제로 그 변수의 데이터 유형을 확인하지 않습니다. stringint을 같은 값으로 비교하면 true를 반환합니다.

제게 따르면 ===은 사용하고있는 데이터가 모두 손실 된 것으로 간주되기 때문에 값뿐만 아니라 데이터 형식도 비교할 수 있습니다.

데이터 유형에 대해 전혀 고려하지 않으면 ==을 사용해도됩니다. 값을 string으로 변환 할 필요가 없습니다. 첫 번째 예에서

1

어떤 이유로 당신이 공간이, 그것은 (심지어 == 포함) 허위 평가합니다 얻는 경우 : 개인적으로

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()는 필요하지 않지만 문자열이기도 한 데이터를 얻을 수 있습니다.