일반 자동 형변환 (문자열 -> 숫자)

황제낙엽 2009.06.25 09:27 조회 수 : 452 추천:108

sitelink1  
sitelink2  
sitelink3  
sitelink4  
extra_vars4  
extra_vars5  
extra_vars6  

보통 사칙연산을 할 경우 중간에 데이터가 본의아니게 문자열로 변환 될 경우가 있는데
이때 연산결과가 NaN 이 될 경우가 있다.
이를 위해서 데이터의 형을 유지해 줄 연산이 필요한데
그래서 단순 자연수 연산인 경우에는 parseInt() 를 이용했었다.

함수를 이용하는 방법은 지금까지 써온 일반적인 프로그래밍 습관인데
자바스크립트는 자동 형변환 기능을 이용하여 이를 쉽게 해결 할 수 있다.
 (+this._getValue())  
value가 무엇이 되었든 자동으로 수치형 데이터로 변환해준다.
다만 exception처리가 없음에 주의한다.

참고로 변환 실패시를 대비하여 다음과 같은 함수를 만들어 사용하곤 한다.

·미리보기 | 소스복사·
  1.  /**  
  2.   * string을 int로 변환한다.  
  3.   *  
  4.   * @param {string} value 값  
  5.   * @param {number} def (변환 실패시의 default값)  
  6.   * @return {int} 변환 결과  
  7.   */  
  8.  parseInt: function(/* string */value, def) {   
  9.      if (value) {   
  10.          var rtnValue = parseInt(value);   
  11.          if (isNaN(rtnValue)) {   
  12.             return def;   
  13.          } else {   
  14.             return rtnValue;   
  15.          }   
  16.      } else {   
  17.         return def;   
  18.      }   
  19.  }  

다음과 같이 Integer 여부를 검사하는 유틸도 유용하다.
·미리보기 | 소스복사·
  1. /**  
  2.  * int 여부를 검사한다.  
  3.  *  
  4.  * @param {number} value 값  
  5.  * @return {boolean} int 여부  
  6.  */  
  7. isInt: function(/* number */value) {   
  8.     if (typeof value == "number") {   
  9.         return (value === Math.floor(value));   
  10.     } else {   
  11.         return false;   
  12.     }   
  13. }  

내친김에 나머지 데이터 타입도 검사해보자
·미리보기 | 소스복사·
  1. isNumber: function(v) {   
  2.     return typeof v == "number";   
  3. }   
  4. ,   
  5. isString: function(v) {   
  6.     return typeof v == "string";   
  7. }   
  8. ,   
  9. isUndefined: function(v) {   
  10.     return v === undefined;   
  11. }   
  12. ,   
  13. isArray: function(v) {   
  14.     return v != null && v.constructor == Array;   
  15. }   
  16. ,   
  17. isFunction: function(v) {   
  18.     return typeof v == "function";   
  19. }   
  20. ,   
  21. isObject: function(v) {   
  22.     return v != null && typeof v == "object";   
  23. }  

한가지 parseInt() 함수의 또다른 특징이 있는데,
그것은 입력 데이터를 첫번째부터 순서대로 파싱한다는 것이다.
가령 input = "123", input="123a" 는 동일한 결과로 숫자 "123" 을 리턴한다.
하지만 input = "a123" 은 NaN 을 리턴한다.
번호 제목 글쓴이 날짜 조회 수
106 [JavaScript Tutorials] JavaScript and memory leaks (해석중) 황제낙엽 2009.04.08 443
105 [JavaScript Tutorials] Handling runtime errors in JavaScript using try/catch/finally (해석중) 황제낙엽 2009.04.08 3081
104 JavaScript Closures for Dummies 황제낙엽 2009.04.08 644
103 자바스크립트 예약어 황제낙엽 2010.11.03 408
102 YUI Logger(Yahoo) 를 동적으로 로드하는 북마크릿 황제낙엽 2010.10.03 358
101 Javascript 를 사용하여 Binary File 읽기 황제낙엽 2010.09.29 794
100 크로스 브라우저를 위한 브라우저 검사 코드 file 황제낙엽 2010.08.27 461
99 Dynatrace For Ajax Performance 황제낙엽 2010.08.18 374
98 javascirpt IME-Mode 설정하기 황제낙엽 2010.08.17 1411
97 Iframe 내의 페이지 접근방법 황제낙엽 2009.11.12 400
96 외부 라이브러리 (.js) 의 바람직한 동적 로딩 (The best way to load external JavaScript) 황제낙엽 2009.10.05 636
95 숫자값으로의 변환 형태 황제낙엽 2009.09.02 413
94 Boolean 데이터 타입 황제낙엽 2009.09.02 436
93 toString 변환 테이블 황제낙엽 2009.09.02 402
92 URI 인코딩을 해야 하는 문자들 황제낙엽 2009.09.02 373
91 체인 생성자(생성자 체인), 프로토타입 체인 그리고 생성자 재지정 황제낙엽 2009.08.12 353
90 이미지 로드 코드 황제낙엽 2009.06.27 462
» 자동 형변환 (문자열 -> 숫자) 황제낙엽 2009.06.25 452
88 자바스크립트 쿠키 황제낙엽 2009.06.11 425
87 이클립스에 Aptana 플러그인 설치하기 (자바스크립트 개발에 유용한 IDE) 황제낙엽 2009.04.17 397