sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | |
sitelink4 | |
extra_vars4 | |
extra_vars5 | |
extra_vars6 |
보통 사칙연산을 할 경우 중간에 데이터가 본의아니게 문자열로 변환 될 경우가 있는데
이때 연산결과가 NaN 이 될 경우가 있다.
이를 위해서 데이터의 형을 유지해 줄 연산이 필요한데
그래서 단순 자연수 연산인 경우에는 parseInt() 를 이용했었다.
함수를 이용하는 방법은 지금까지 써온 일반적인 프로그래밍 습관인데
자바스크립트는 자동 형변환 기능을 이용하여 이를 쉽게 해결 할 수 있다.
(+this._getValue())
value가 무엇이 되었든 자동으로 수치형 데이터로 변환해준다.
다만 exception처리가 없음에 주의한다.
참고로 변환 실패시를 대비하여 다음과 같은 함수를 만들어 사용하곤 한다.
·미리보기 | 소스복사·
- /**
- * string을 int로 변환한다.
- *
- * @param {string} value 값
- * @param {number} def (변환 실패시의 default값)
- * @return {int} 변환 결과
- */
- parseInt: function(/* string */value, def) {
- if (value) {
- var rtnValue = parseInt(value);
- if (isNaN(rtnValue)) {
- return def;
- } else {
- return rtnValue;
- }
- } else {
- return def;
- }
- }
다음과 같이 Integer 여부를 검사하는 유틸도 유용하다.
·미리보기 | 소스복사·
- /**
- * int 여부를 검사한다.
- *
- * @param {number} value 값
- * @return {boolean} int 여부
- */
- isInt: function(/* number */value) {
- if (typeof value == "number") {
- return (value === Math.floor(value));
- } else {
- return false;
- }
- }
내친김에 나머지 데이터 타입도 검사해보자
·미리보기 | 소스복사·
- isNumber: function(v) {
- return typeof v == "number";
- }
- ,
- isString: function(v) {
- return typeof v == "string";
- }
- ,
- isUndefined: function(v) {
- return v === undefined;
- }
- ,
- isArray: function(v) {
- return v != null && v.constructor == Array;
- }
- ,
- isFunction: function(v) {
- return typeof v == "function";
- }
- ,
- isObject: function(v) {
- return v != null && typeof v == "object";
- }
한가지 parseInt() 함수의 또다른 특징이 있는데,
그것은 입력 데이터를 첫번째부터 순서대로 파싱한다는 것이다.
가령 input = "123", input="123a" 는 동일한 결과로 숫자 "123" 을 리턴한다.
하지만 input = "a123" 은 NaN 을 리턴한다.