아시다시피 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>
이 외에도 여러가지 경우가 있을 수 있을 겁니다. 그런 부분은 확인하는 데로 업데이트 하겠습니다.