loading

자바스크립트(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 문자열인 것으로 확인이 되었다.

이렇게  숫자 + 문자  의 결과가 문자열로 나와 가장 실수를 많이 발생되는 부분이

 

암묵적으로 이런 형변환이 일어났을 때 일이다.

이런 걸 보고 강제 형 변환되었다고 말한다.

 

암묵적으로 강제 형 변환해서 사용을 해도 큰 문제는 안되지만,

만약 팀 프로젝트를 진행 중이라고 하면 약간 혼동을 줄 만한 요소이기 때문에 

 

만약 내가 강제 형 변환이 되는 거 알고 암묵적인 형태의 코드를 작성했다고 가정하고,

이 소스를 이어받아 팀 내에 다른 누군가가 다른 부분의 코드를 작성한다 하면? 

 

내가 말해주지 않는 이상 분명 실수가 일어날 것이며, 내가 말을 안 한다 할지라도 누군가

코드를 짜면서 문제가 발생되면 해결해 나가면서 코드를 작성할 거긴 한데, 

 

이런 상황이라면 분명 시간도 더 오래 걸리고, 스트레스도 더 받기 때문에 암묵적인 강제 형 변환을

사용하는 것보다 직관적으로 바로 알아차릴 수 있는 명시적인 유형 캐스팅 방법이 더 좋을 듯하다.

 

 

반응형

+ Recent posts