Javascript를 사용 중에 값을 비교시엔
비교연산자인 ==연산자와 ===연산자를 사용한다.
두 연산자 모두 비교한 피연산자 값이 일치하면 ture값을 반환하고,
비교한 피연산자 값이 일치하지 않으면 false를 반환한다.
하지만 값을 비교할 때
== 연산자보다는 === 연산자를 사용할 것을 권장하고 있다.
그 이유가 뭘까?
== 연산자는 Equal Operator(비교연산자),
===연산자는 Strict Equal Operator(엄격한 비교 연산자)이기 때문이다.
두 연산자를 코드를 통해 쉽게 예를 들어 보자면 아래와 같다.
1. == 연산자
100 == 100 // true
100 == '100' // true
1 == true // true
true == 'true' // true
null == undefined // true
== 비교 연산자는 두 값을 비교해서 같으면 true 다르면 false 값을 리턴
두 피연산자 값이 서로 타입이 다를 경우에는 자동으로 일부 피연산자의 타입을 변환한 후에 값을 비교한다.
2. === 비교 연산자
100 === 100 // true
100 === '100' // false
1 === true // false
true === 'true' // false
null === undefined // false
NaN === NaN // false
피연산자 값의 타입이 서로 다르면 자동으로 타입을 반환해 주는 == 연산자와 달리
=== 연산자는 두 피연산자 값의 타입이 서로 다르더라도 변환하지 않고
있는 그대로의 값을 비교하는 방식으로 엄격하게 값을 비교한다.
또한 NaN 값은 자기 자신을 포함하여 어떠한 값과도 일치하지 않는다.
즉, NaN 값과 비교하게 되면 항상 false의 값이 반환된다.
== 연산자에서 타입이 다르면 알아서 변환해주기 때문에
숫자 1 과 문자 '1'을 동일하게 판단할 수 있다. 결과가 달라진다는 것이다.
그럼 확인과 검증이 무의미해지는 것이고,
비즈니스로직에서 해당 값으로 분기처리를 한다면 완전히 다른 결과를 낼 것이다.
Fe 에서 Be로 보낼 때 데이터 타입이 달라서 나는 오류는 자주 겪을 것이다.
자동으로 변환해주는 자바스크립트의 편리함(?)으로
에러는 피하더라도 오히려 혼선을 가져올 수 있다.
그래서 타입을 지정해서 타입스크립트를 쓰는 것이다.
컴파일 단계에서 오류 포착을 할 수 있다는 장점도 있지만 일단 넘어가고
불명확하게 지정해버릴 수 있는게 JS의 장점이자 단점, 양날의 검이다.
프로그래밍은 확실해야하니까, 확실하고 명확하게 지정하는 것이 좋다.
'개념 창고 > JS' 카테고리의 다른 글
JSON.stringify(value, replacer, space) 설명 (0) | 2024.08.08 |
---|---|
[JQuery] JQuery 기본문법 (0) | 2023.03.22 |