souvenir

== vs === 의 차이 본문

2020년/Java script

== vs === 의 차이

풀빵이 2020. 11. 19. 23:22
요약 : ==는 값만 확인, ===은 유형과 값을 모두 확인함

 

JavaScript에서는 대개 double Equales(==) 대신 triple Equales(===)를 경우가 많다.

그 이유는 막연히 ===이 더 엄격하게 값의 동일함을 확인하므로 안정성을 위해 후자를 사용하는 것이 낫다고 하기 때문이다. 정확히 이 둘의 차이는 무엇일까? 

 

 둘 다 값이 동일한지를 확인하는 기호이지만  차이는 

1) value와 type 모두 동일한지 확인하는 기호

2) value만 동일한지 확인하는 기호

이다. 

 

예시를 봐보자

 

1.  triple equales(===)의 경우

5 === 5 //true
'hello world' === 'hello world' // true value와 type(string) 모두 동일
true === true // ture


77 === '77' // false number vs string
'cat'=== 'dog' // false 값이 다르니 당연
false === 0 // false boolean vs number

위의 예시처럼 값 뿐 아니라 type까지 정확하게 동일할 때 true로 확인된다.

 

2. double equalse(==)의 경우

== 의 경우  type coercion(유형변환)도 강제할 수있다. 

type coercion란 비교할 두 값을 공통된 타입으로 변환후 값을 비교한다는 의미이다. 그렇기 때문에 느슨한 동등성(loose equality)을 확인하는 용도라고도 한다.

'77' === 77 // false triple equalse의 경우 유형도 확인하므로
'77' == 77 // ture

false === 0 // false
false == 0 // true 0은 falsy한 값에 속하므로

 

falsy한 값이라는 것이 무엇인지는 이전 블로그 글에 잘 설명해두었다. JS는 유연성이 높아서 아래의 값들 모두 falsey한 값이라고 지칭한다. 

  • false — boolean false
  • 0 — number zero
  • “” — empty string
  • null
  • undefined
  • NaN — Not A Number

그래서 아래의 예시에서도 false일 때의 결과가 출력되게 된다.

function foo () {
  if(0){
    console.log('안')
  }
 console.log('밖')
}

foo(); //'밖'이 출력됨

 

 

 

 

 

출처 : codeburst.io/javascript-double-equals-vs-triple-equals-61d4ce5a121a

Comments