자바스크립트(javascript) - 타입(유형), 형, 변환 개념잡기
순번 | 링크페이지 아래 제목을 클릭하면 해당 링크페이지로 이동 됩니다. |
1 | JS - 형 변환에 대하여 - (1) |
2 | JS - 형 변환에 대하여 - (2) |
3 | JS - 형 변환에 대하여 - (3) |
4 | JS - 형 변환에 대하여 - (4) |
5 | JS - 형 변환에 대하여 - (5) |
6 | JS - 형 변환에 대하여 - (6) |
자바스크립트에서 형 변환이란 문자열을 숫자로, 또는 문자열을 Bool 값으로 등등
기존의 타입에서 다른 타입으로 형을 변환되는 것을 말한다.
자바스크립트 언어는 다른 컴파일 언어와 달리 이 형 변환에 있어서 매우 유하다.
명시적으로 형 변환을 안 해도 암묵적으로 형 변환이 일어지는 경우도 있으며
이러한 경우 때문에 매우 혼란스럽기도 한다.
이렇게 형 변환에 대해서 명시적 또는 암묵적인 형태를 알아보고 형 변환에 좀 더 알아보자.
▶ 값 유형 변환
💻 명시적으로 변환
값을 한 유형에서 다른 유형으로 변환하는 것을 직접 실행했을 땐 이것을 유형 캐스팅한다고 한다.
문자열을 가지고 작업을 하다가 이 값을 숫자로 사용해야 하는 경우
예시를 통해서 알아보자.
예)
var num_1 = '100'; // string 문자열 값 100
var num_2 = Number(num_1); // 형변환 숫자로
console.log(num_2); // 100
console.log(typeof num_2); // number
이 코드를 살펴보면 num_1 이라는 변수가 string 문자열 값인 "100"을 담고 있다.
num_2 변수에 num_1 의 문자열 "100" 값을 숫자로 형 변환한 후 number 타입의 숫자 100을 담았다.
이렇게 나는 문자열 "100" 을 담고 있는 변수 num_1을 number 타입으로 사용할 일이 있어서 명시적으로
Number()라는 것을 이용해 숫자 타입으로 형 변환을 했다.
이처럼 내가 직접적으로 내 필요로 의해 직접 형 변환을 수행한 경우를 명시적으로 형 변환을 했다고 하고,
이것을 캐스팅 했다고 말한다.
확인을 해보면 console.log 로 num_2를 출력해보면 숫자 100이라는 것을 확인할 수 있고,
타입을 출력해보면 number 라는 타입을 확인할 수가 있다.
💻 암묵적으로 변환
이것도 값을 한 유형에서 다른 유형으로 변화는 결과는 똑같은데 의미가 다르다.
사실 명시적으로 형 변환해서 사용을 했을 땐,
개발자의 의도가 필요로 의해서 사용을 했다는 것을 알 수가 있는데
암묵적으로 형 변환이 되었다면, 개발자의 의도를 파악하기가 힘들고 이로 인해서
혼동이 발생 될 수가 있다.
예를 통해서 알아보자.
var num_1 = 100;
var num_2 = num_1 + '100'; // ????
console.log(num_2); // 100100
console.log(typeof num_2); // string
이 코드를 살펴보면,
num_1 변수에 숫자 타입의 100이라는 값을 담고 있고,
num_2 변수에는 num_1의 값과 문자열 "100"을 더한 값을 담고 있다.
분명 형 변환을 명시적으로 한 적이 없는데 결과를 보니
"100100"
이라는 문자열의 값 결과가 나왔고, 타입을 확인해보니 string 문자열인 것으로 확인이 되었다.
이렇게 숫자 + 문자 의 결과가 문자열로 나와 가장 실수를 많이 발생되는 부분이
암묵적으로 이런 형변환이 일어났을 때 일이다.
이런 걸 보고 강제 형 변환되었다고 말한다.
암묵적으로 강제 형 변환해서 사용을 해도 큰 문제는 안되지만,
만약 팀 프로젝트를 진행 중이라고 하면 약간 혼동을 줄 만한 요소이기 때문에
만약 내가 강제 형 변환이 되는 거 알고 암묵적인 형태의 코드를 작성했다고 가정하고,
이 소스를 이어받아 팀 내에 다른 누군가가 다른 부분의 코드를 작성한다 하면?
내가 말해주지 않는 이상 분명 실수가 일어날 것이며, 내가 말을 안 한다 할지라도 누군가
코드를 짜면서 문제가 발생되면 해결해 나가면서 코드를 작성할 거긴 한데,
이런 상황이라면 분명 시간도 더 오래 걸리고, 스트레스도 더 받기 때문에 암묵적인 강제 형 변환을
사용하는 것보다 직관적으로 바로 알아차릴 수 있는 명시적인 유형 캐스팅 방법이 더 좋을 듯하다.
'web 언어 > HTML5 & CSS & Javascript' 카테고리의 다른 글
JS - 형 변환에 대하여 - (3) (0) | 2022.04.16 |
---|---|
JS - 형 변환에 대하여 - (2) (0) | 2022.04.15 |
JS - 네이티브 함수(String, Number, Boolean, Array) 등 사용할 때 new 생성자로 사용하지 말자 (0) | 2022.04.13 |
JS - Number 타입에 대해 알아보자 - (5) (0) | 2022.04.08 |
JS - Number 타입에 대해 알아보자 - (4) (0) | 2022.04.07 |