2012-06-27 3 views
-3

다음 두 항목은 모두 동일한 문자열 값을 포함하지만 '==='를 사용하여 비교하면 false를 반환합니다.자바 스크립트에서 두 개의 'equal'문자열을 비교하면 false가 반환됩니다.

(hiddenColumns[hidenColsIndex] === cells[metricColsIndex].columnName) 

사용이 비교 '=='는 true를 돌려

(hiddenColumns[hidenColsIndex] == cells[metricColsIndex].columnName) 

이유는 무엇입니까?

+2

경우] (이 일반 개체를 비교 고려), 값이 동일하기 때문에, 문은 사실이다 '==='비교 결과가'false'이면, ** 같은 문자열 값이 아닙니다 **. 아마 하나는 숫자이고 다른 하나는 그 숫자의 문자열 버전입니다. – Pointy

+0

자세한 정보가 필요합니다. JSON.stringify를 사용하여 해당 문자열을 검사하고 표시 할 수 있습니다. – Bergi

+1

트리플 등호 연산자는 값이 동일해야 함은 물론 유형도 동일해야 함을 의미합니다. 둘 모두에서'typeof()'를 수행하여 얻은 것을보십시오. – sachleen

답변

1

같은 유형의 두 개체를 비교하지 않습니다. 하나의 값 (또는 둘 다)은 문자열이 아닙니다.

+0

정말로 맞습니다. Visual Studio 디버거에서 둘 다 조사 식 창에 'String'유형이 있다고보고하는 동안 typeof()는 하나가 Object이고 다른 하나가 String임을 나타냅니다. 잘 했어. 다음은 텍스트 문자열과 문자열 객체의 차이점에 대한 링크입니다 [link] http://www.irt.org/articles/js028/ – Bart

0

===는 값과 데이터 유형을 비교하는 것을 의미합니다.

값의 두 요소와 데이터 형식을 비교하려면 ===가 거짓이어야합니다. 그들은 두 번째의 경우에 두 개의 서로 다른 데이터 유형 이기 때문에 귀하의 경우에는

는, 첫 번째 문이 거짓

2
//a and b are equal in data but not equal in type 
var a = 1; 
var b = "1"; 

//== will return true 
if (a == b) 
{ 
    console.log("true"); 
} 
else 
{ 
    console.log("false"); 
}; 

//=== will return false 
if (a === b) 
{ 
    console.log("true"); 
} 
else 
{ 
    console.log("false"); 
}; 
관련 문제