연산자와 자료형변환
사칙연산을 이용해서 데이터를 연산하는 경우 때에 따라서 자료형 변환이 일어나게 된다.
+ 연산자
이 중 + 연산자는 숫자끼리의 연산이 아니라 문자열과 숫자가 함께 덧셈 연산이 이루어지는 경우 문자열로 자동형변환이 된다.
| <script> alert(10 + 20); //30 숫자 + 숫자 = 숫자 alert('10' + 20) //1020 문자열 + 숫자 = 문자열 alert(10 + '20'); //1020 숫자 + 문자열 = 문자열 alert('10' + '20'); //1020 문자열 + 문자열 = 문자열 </script> | cs |
위의 코드와 같이 + 연산자는 숫자끼리의 연산이 아니면 문자열로 자동형변환이 일어나는 것을 알 수 있다.
+ 이외의 연산자
+ 연산자를 제외한 사칙 연산자는 피연산자에 문자열이 있을 경우 숫자형으로 자동형변환 된다.
| <script> alert('20' - 10); //10 alert('20' * 10); //200 alert('20' / 10); //2 alert('20' % 3); //2 </script> | cs |
강제형변환 / Number() String()
위와 같이 연사자를 이용하여 자료형이 자동으로 변환되는 것 이외에 강제로 자료형을 변환할 수도 있다.
앞선 03 입력하기 글에서 prompt()함수에 대해서 알아보았는데, 이 함수의 경우 숫자를 입력하여도 반환되는 값은
문자열로 반환이 된다. 따라서 숫자형으로 연산을 하고자 할 경우에는 강제형변환을 해주어야한다.
강제형변환을 하는 함수는 Number()함수와 String() 함수이다.
Number()함수는 다른 자료형을 숫자로 바꾸어 반환해 준다.
String()함수는 다른 자료형을 문자열로 바꾸어 반환해 준다.
| <script> var input = prompt('Input Number', 'Input here'); //input에 숫자 10입력 alert( input + 10); //1010 문자열 + 숫자 alert( Number(input) + 10); //20 숫자 + 숫자 </script> | cs |
위 코드와 같이 prompt()함수를 이용해 입력받은 값을 숫자로 사용하고자 할 경우에는 Number()함수를 이용해서
강제형변환을 해주어야 한다.