==, === 차이(동등 연산자, 일치 연산자)

JUNHO YEOM·2022년 7월 26일
0

Javascript

목록 보기
3/9

==과 ===은 다르다.

프로그램을 처음 배울때 우리가 사용하는 = 기호는 수학과 같지 않다는 것을 알게된다.
a = b 는 a 에 b를 대입하는 의미였고, 그래서 프로그래밍을 할때는 무조건 == 을 사용하면 될것이라고 생각했다.
Javascript를 배우기 전까지는


==(동등 연산자와), ===(일치 연산자)

== (동등 연산자): 형이 다른 피연산자를 비교할때 피 연산자를 숫자형으로 바꾼다. (우리가 ==을 사용하면 안되는 이유이다.)
=== (일치 연산자): 자료형의 일치 여부까지 확인하기 때문에 자료형이 다르면 false를 반환한다.
javascript 에서 동등 연산자와 일치 연산자는 큰 차이를 만든다.

다음의 예시를 살펴보자

// 다음의 값들은 true일까 false일까
console.log( 0 == '0')
console.log( 0 === '0')

console.log('01' == 1)
console.log('01' === 1)

console.log('01' == '1')

console.log( true == 1 )
console.log( false == 0 )
console.log( false == '')
console.log( null == undefined )

문자형과 숫자형의 비교

console.log( 0 == '0') // true 형이 다르기 때문에 '0'을 숫자형으로 변환하여 비교한다.
console.log( 0 === '0') // 형이 달라서 false를 반환한다.

console.log('01' == 1) // true 형이 다르기 때문에 '01'을 숫자 1로 변환하여 비교한다.
console.log('01' === 1) // false 형이 달라서 false를 반환한다.

console.log('01' == '1') // false 문자열과 문자열의 비교이다. 형변환이 일어나지 않는다.

boolean type의 비교

console.log( true == 1 ) // true / true의 숫자형 변환은 1이다 (Number(true)) === 1
console.log( false == 0 ) // true / false를 숫자형 변환은 0이다.(Number(true)) === 1
console.log( false == '') // true / 빈 문자열을 숫자형으로 변환하면 0이다.
console.log( null == undefined ) // true / 특이케이스 null 과 undefined를 동등 연산자로 비교하면 true이다.

두가지 연산자를 모두 알고 있었지만, 예시들을 보고나니 다시 새로워 보이는 부분이 많았다.
동등연산자를 이용해서 자유로운 스타일로 코드를 만들 수도 있겠지만
오류의 가능성을 조금이라도 줄여주는 일치연산자를 사용하는데 익숙해 져야 겠다.

참고자료

0개의 댓글