== 과 ===

손준호·2023년 6월 30일
0

ES6

목록 보기
1/5
post-thumbnail

JS의 동등 연산자와 일치 연산자


JS에서 == 와 === 가 다르다는 사실은 누구나 알고 있다.

이에 대한 글은 무수하게 많으니 간단 요약을 하자면

== 는 값만 비교하고 === 는 타입까지 비교한다.

라고 알고 들어가면 되겠다.

Modern Javascript DeepDive 를 공부할 때

아 자바스크립트의 비교는 이렇군요? 오케이, 알겠습니다!

하고 넘어갔었다.

그리고 교수님께서 JS에서는 웬만하면 ===로 쓰세요, 라고 하셔서 ===로 풀다가 위 개념을 한번 더 복습하게 되어서 포스팅한다.

2018 카카오 블라인드 1차 코테

문제는 이해하기 어렵지 않다.

다트게임을 하는데, 점수가 문자열로 주어지고 문자열의 조건에 맞게 로직을 작성하면 된다.

처음에는 문자열을 슬라이싱해서 각 회차에 맞게 로직을 작성하려고 했다.

그런데 여기서 보너스 옵션으로 와 #이 주어지는데 이게 있을수도 있고 없을수도 있어서 각 기회마다 이게 일 경우, #일 경우를 나누고 각 회차에 두 경우를 모두 작성해야 하므로

각 기회마다 S인지 D인지 T인지 + *인지 #인지를 3번 써야되니까 더 나은게 없을까 고민하다가, 정규표현식 생각을 했는데 정규식은 내가 쓸줄을 모르고, 그래서 그냥 무식하게 문자열 하나씩 돌면서 else-if를 쓰기로 했다.

image

여기서 주의할 건 10번라인의 if문이다.

점수가 10일 경우에는 문자열의 인덱스와 그 다음 인덱스가 1과 0일 때 10으로 설정하고 다음 인덱스인 0을 건너뛰기 위해 i++을 했다.

여기서는 == 을 썼다. 따라서, dartResult 가 문자 형태지만 == 를 써서 숫자로 참거짓을 판단할 수 있게 했다.

처음에는 이걸 ===로 썼다가 통과못한 테스트 케이스가 생겼다.

역시나 제출도 불통이었다.

image

=== 1 의 형태로 쓰면 점수가 10일 경우 점수 합산을 할 수 없어 틀리는 케이스가 생긴 것이다.

==1로 비교하거나, === ’1’ 처럼 문자열 타입으로 비교하면 문제 없다.

신기한 자바스크립트 세상

profile
디지털 노마드가 되고싶은 개발자

0개의 댓글