[개발일기] (230501) 출근 대신 JS

오늘·2023년 5월 1일
0

[개발일기]

목록 보기
166/199

근로자의 날

근로자의 날이라 출근을 하지 않았다.

오늘도 쉴까 하다가 토, 일을 너무 많이 놀아버린 것 같아서 JS 공부를 조금 했다.

타입 변환과 단축 평가

오늘 본 내용은 JS의 타입 변환과 단축 평가에 대한 내용이었다.

타입 변환이야 다른 언어에서도 너무 자주 봤던 내용이어서 새로울게 없겠다 싶은 생각이 들긴 했는데, 그래도 중요한 내용이니 꼼꼼히 보자는 생각으로 시작했다.

[] 와 ''의 boolean 변환

조금 의아했던 부분이 빈 배열([])과 빈 문자열('')의 Boolean 값 변환이었다.

예상으로는 둘 다 false 값으로 평가되어야 할 것 같았는데, 공부해보니 []true, ''false로 평가된다고 한다.
빈 배열도 값이 없으니 false로 평가해야하지 않나 싶었어서 조금 특이하다 생각했다.

옵셔널 체이닝 연산자, null 병합 연산자

이 두 연산자는 JS 있다는 것이 조금 놀라웠다.

Kotlin을 공부하면서 유사한 연산자들을 봤었는데, JS에도 이런 것들이 있을거라고는 생각하지 못했었다.
아무래도 JS는 비교적 예전부터 쓰이던 언어인데, 이 두 연산자가 있다고 하니 조금 신기했는데, 책의 내용을 보니 ES11(ECMAScript2020)부터 지원하기 시작했다고 한다.

JS도 좋은 방향으로 업데이트가 꾸준히 되고 있구나 하는 생각이 들었다.

간단한 사용법 정리

우선 옵셔널 체이닝 연산자(?.)는, 객체의 프로퍼티에 접근할 때 해당 객체가 null이나 undefined를 가리키고 있으면 프로퍼티 접근을 막아 오류가 발생하지 않도록 하는 용도였다.

let obj = null;
let assign = obj?.value;

console.log(assign);	// null

이 부분은 Kotlin과 이름은 다르지만 같은 사용 방법이었다.

다음으로 null 병합 연산자(??)는 좌항이 null이나 undefined 일 경우 우항의 값을 반환하는 연산자이다.

let val = null;
let assign = val ?? 'default';

console.log(assign);	// 'default'

이 연산자는 JS에서 처음 보는 연산자였는데, 꽤나 유용하다는 생각이 들었다.

위 둘은 각각 논리곱(&&) 연산자와 논리합(||) 연산자로 대체될 수 있다.

// ?. 유사 기능
let assign = obj && obj.value;

// ?? 유사 기능
let assign = obj || 'default';

ES11에서 이 두 연산자가 나오기 전에는 논리곱, 논리합 연산자를 사용한 단축 평가를 통해 위와 비슷한 기능을 구현했다고 한다.
다만 논리곱, 논리합 연산자를 사용한 단축평가에서 일부 문제가 있는 부분을 개선해서 위의 두 연산자를 도입했다고 한다.


지금 생각해보니 4월에 이 책을 끝내겠다고 했었는데 아직 한참 남아버렸다..
5월에는 끝낼 수 있을지 확신은 안 서는데, 꾸준히는 해봐야겠다.

profile
Junior Mobile 개발자

0개의 댓글