본문 바로가기

카테고리 없음

[JavaScript] String, Number 타입 혼용 시 유의사항


 아시다시피 JavaScript는 String, Number 타입이 함께 쓰여질 시 자동으로 형변환을 해주기 때문에 이를 혼용해서 쓰시는 분들도 많은데요. 이때 유의해야할 점 몇가지를 적어보겠습니다. 


1. 0은 false "0"은 true 

 JavaScript에서 null, undefined, "" 과 함께 0은 false 값으로 인식이 되는 값입니다. 그렇기 때문에 숫자를 "0"으로 처리했을 경우에는 예상치 못한 결과가 나올 수 있으므로 주의해야 합니다. 다음에서 확인할 수 있습니다. 

 <script>

   if("0"){

      console.log('"0" is true');   // 출력됨 

   }

   if(0){

      console.log('0 is true');    // 출력되지 않음 

   }

</script>


2. String 타입과 Number 타입의 사칙연산 

 +, -, /, * 의 사칙연산 중 + 룰 제외한 나머지는 결과값이 Number 타입으로 나오게 됩니다. +의 경우는 String 타입으로 변환됩니다. 계산 시 String타입이 먼저 오느냐 Number 타입이 먼저 오느냐는 상관없습니다. 

<script>

var str = "10";

var num = 2;

console.log((str / num));   // Number 타입 5

console.log((str * num));   // Number 타입 20

console.log((str - num));   // Number 타입 8

console.log((str + num));   // String 타입 "102"

</script>


3. 배열 형태 indexing, length 프로퍼티 사용의 차이 

 당연한 얘기일 수도 있지만, Number 타입의 경우 num[i]의 형태로 indexing하거나 length 프로퍼티 값을 사용하거나 할 수 없습니다. 

<script>

   var str = "123";

   var num = 123;

   console.log(str[2]);          // "3"

   console.log(str.length);    //  3


   console.log(num[2]);      // undefined

   console.log(num.length); // undefined

</script>


 이 외에도 여러가지 경우가 있을 수 있을 겁니다. 그런 부분은 확인하는 데로 업데이트 하겠습니다.