2013-03-26 4 views
3

문자열 값을 확인할 때 '=='을 사용합니다. 그러나 '==='가 사용 된 경우를 보았습니다. 대신문자열을 비교할 때 == 대신 ==를 사용하는 이유

if("true" == "true"){ 
alert('true'); 
} 

의 예를 들어이 사용됩니다

if("true" === "true"){ 
alert('true'); 
} 

이 뒤에 추론은 무엇입니까? 두 가지 유스 케이스 모두 예상대로 작동하는 것 같습니다.

+3

은 [== 대 자바 스크립트 === : 그것을합니까없이 내가 사용하는 "동일한"연산자?] 이것 좀보세요 [1] [1] : http://stackoverflow.com/ 질문/359494/javascript-vs-does-it-matter-which-equal-operator-i-use – jiiri

+0

당신이 원하는 정보를 얻었을 때 응답을 표시하는 것을 잊지 마십시오. –

답변

7

연산자 === 연산자는 값이 같을뿐만 아니라 비교되는 두 항목이 동일한 유형이기도합니다. == 오퍼레이터 만 두 항목의 값이 코멘트에 언급 @amnotiam로서

동일한 것을 확인하는 반면, 또한 The Abstract Equality Comparison Algorithm

+3

본질적으로 ==를 추가하면 형식 변환이 시도되고 그것을 비교합니다. 어디 === 엄격한 비교 : – theshadowmonkey

+0

당신의 대답이 설명하는 것과는 조금 다릅니다. 그들은 타입이 동등한지를 검사하고 타입이 동일 할 때 그들은 똑같이 행동하지만, 그렇지 않다면'=='는 피연산자를 일치하는 타입으로 강요하는 추가 작업을 수행하고 타입이 비교 될 때까지 재귀 적으로 재 시도합니다 동일합니다. 마지막으로 유형이 일치하면 값을 비교할 수 있습니다. –

+0

@amnotiam 그렇다면 미래의 방문자를 위해 더 정확한 답변을 어떻게 바꿀 수 있습니까? –

2

===는 유형 값을 확인하기 위해 사용되는 체크 아웃 할 수있다 .. 해당 유형

을 확인하지 때문에 모두 코드 아래 ==에 대한

var str="300"; 

//this gt execute 
if(str==="300") 
{ 
     alert("this alert get executed"); 
} 


//this not execute 
if(str===300) 
{ 
     alert("this alert not get executed");  
} 

유효

//this get execute 
if(str=="300") 
{ 
     alert("this alert get executed"); 
} 


//this get execute 
if(str==300) 
{ 
     alert("this alert get executed"); 
} 
1

firts 수표는 논리적 테스트이며 두 번째 수표는 논리적이고 형식 테스트입니다.

== 한 쪽이 두 번째 쪽과 같은지 확인 === 왼쪽 쪽이 두 번째 같지만 같은 유형의 쪽인지 확인하십시오.

if("true" == "true") 

검사가 동일한 문자열이며 모두 문자열 값 인 경우 모두 동일한 끈을

if("true" === "true") 

체크 경우.

또한 음수 값과 유형 비교를 수행하는! == 연산자가 있습니다.

2
10 == '10' // true | check value: 10 equal 10 
10 == 10 // true | check value: 10 equal 10 

10 === '10' // false | check type: int not equal string 
10 === 10 // true | check type: int equal int, check value: 10 equal 10 

수표 유형.

+0

이 답은 독자가 가치 체크가'==='에서 처음 발생한다고 믿게합니다. 이것은 사실이 아닙니다. 먼저 타입을 비교하고, 실패하면 더 이상 진행하기 전에'false'를 반환합니다. [엄격한 평등 비교 알고리즘] (http://es5.github.com/#x11.9.6)을 참조하십시오. –

+1

내 관심을 가져 주셔서 대단히 감사합니다. – mayo

관련 문제