자바스크립트의 자동형변환
코딩 테스트 문제를 풀다가 내 풀이와 다른 개발자 분의 풀이를 비교하던 도중 이러한 코드를 보았다.
return !(n % (n + "").split("").reduce((a, b) => +b + +a ));
여기서 눈여겨보아야 할 부분은 바로 (n + "")
, +b + +a
이다.
원래라면 n에는 Number 타입의 데이터가 들어가고 a, b는 String 타입이기 때문에 다음과 같은 결과가 나올 것이다.
const n = 123;
const a = "1";
const b = "2";
console.log(n.split("")); // TypeError
console.log(b + a); // "21"
split
은 Number 타입에 사용할 수 없기 때문에 TypeError가 뜨고,
b + a
는 우리가 원하는 값인 3이 나오지 않고 문자열을 이어붙인 "21"
이 출력될 것이다.
하지만 저 코드를 작성한 현명한 개발자는 무사히 원하는 값을 이끌어냈는데, 어떻게 가능한 것일까?
바로 자바스크립트의 자동형변환 덕분이다.
자바스크립트에서 함수와 연산자에 전달되는 값은 대부분 적절한 자료형으로 자동 변환된다.
이러한 점 때문에 (n + "")
에서 Number 타입의 n
이 ""
를 만나 String 타입으로 바뀌고,
+b + +a
에서 String 타입인 a, b
에 양수 부호(+)가 씌워지면서 Number 타입으로 바뀌게 되는 것이다.
이 외에도 불린형으로 변환하는 방법도 있는데,
숫자 0, 빈 문자열, null
, undefined
, NaN
과 같이 직관적으로도 "비어있다" 느껴지는 값들은 false
로 인식되며 나머지 값들은 모두 true
로 인식된다.
이미 배운 내용이었지만 오랜만에 보는 반가운 것들이라 한번 적어보았다.
이상!
내용 출처 : https://ko.javascript.info/type-conversions
썸네일 출처 : https://velog.io/@yejinh/Javascript-%ED%98%95%EB%B3%80%ED%99%98
Author And Source
이 문제에 관하여(자바스크립트의 자동형변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@heejeyang/자바스크립트의-자동형변환저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)