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

황제낙엽 2009.06.25 09:27 조회 수 : 124 추천: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 을 리턴한다.
번호 제목 글쓴이 날짜 조회 수
177 익스플로러용 스크립트 디버거 (Script Debugger for Windows NT 4.0 and Later) 황제낙엽 2008.12.11 176
176 MS 익스플로러상에서 문제가 되는 Leak 모델 황제낙엽 2009.04.03 171
175 소스 보기 막기 황제낙엽 2005.11.18 168
174 문자열에서 역슬래시(backslash) 문자와 유니코드(Unicode)에 대한 고찰 file 황제낙엽 2021.06.03 160
173 [펌] 아사페릴의 사생활 - Javascript의 constructor 와 prototype 황제낙엽 2009.04.02 156
172 JAVASCRIPT REFERENCE 파일 file 황제낙엽 2005.11.22 153
171 CKEditor 3 JavaScript API Documentation 황제낙엽 2011.11.14 147
170 Java 버전의 JavaScript 엔진 라이노 (Rhino) 황제낙엽 2008.07.14 146
169 [JavaScript Tutorials] More leakage patterns (해석중) 황제낙엽 2009.04.10 142
168 CORS 의 내용과 이에 대한 우회 방안들 file 황제낙엽 2021.12.05 139
167 CORS(Cross-Origin Resource Sharing) - 1 file 황제낙엽 2017.03.07 135
166 재사용 가능한 일회용 객체 황제낙엽 2008.08.08 133
165 inherits() 를 이용한 상속 황제낙엽 2012.07.18 129
164 HTTP 접근 제어 (CORS) 황제낙엽 2017.05.29 125
163 call() and apply() methods in Javascript 황제낙엽 2011.10.07 125
162 외부 라이브러리 (.js) 의 바람직한 동적 로딩 (The best way to load external JavaScript) 황제낙엽 2009.10.05 124
» 자동 형변환 (문자열 -> 숫자) 황제낙엽 2009.06.25 124
160 자바스크립트 학습용 유튜브 강의 (드림코딩 by 엘리) 황제낙엽 2021.03.07 122
159 무지개링크 (rainbowlink) file 황제낙엽 2005.07.16 122
158 Rhino 와 env.js 를 사용해서 자바 서버에서 javascript 를 구동해보자 file 황제낙엽 2012.02.15 116