1.변환 함수:js 는 parseInt()과 parseFloat()두 개의 변환 함 수 를 제공 합 니 다.전 자 는 값 을 정수 로 바 꾸 고 후 자 는 값 을 부동 소수점 으로 바꾼다.String 형식 에 이 방법 을 호출 해야만 이 두 함수 가 정확하게 실 행 될 수 있 습 니 다.다른 유형 에 대해 서 는 모두 NaN(Not a Number)을 되 돌려 줍 니 다.문자열 이 숫자 값 인지 아 닌 지 를 판단 하기 전에 parseInt()과 parseFloat()는 이 문자열 을 자세히 분석 합 니 다.parseInt()방법 은 우선 위치 0 곳 의 문 자 를 보고 유효한 숫자 인지 판단 합 니 다.그렇지 않 으 면 이 방법 은 NaN 으로 돌아 가 다른 작업 을 계속 하지 않 습 니 다.그러나 이 문자 가 유효한 숫자 라면 이 방법 은 위치 1 곳 의 문 자 를 보고 같은 테스트 를 한다.이 과정 은 유효 하지 않 은 숫자 를 발견 할 때 까지 계 속 됩 니 다.이 때 parseInt()은 이 문자 의 이전 문자열 을 숫자 로 변환 합 니 다.예 를 들 어 문자열'1234 blue'를 정수 로 바 꾸 려 면 parseInt()는 1234 로 돌아 갑 니 다.문자 b 가 감지 되면 검색 과정 이 중단 되 기 때 문 입 니 다.문자열 에 포 함 된 숫자 는 글자 의 양 이 정확하게 숫자 로 바 뀌 기 때문에 문자열'0xA'는 숫자 10 으로 정확하게 바 뀝 니 다.그러나 문자열'22.5'는 22 로 변 환 됩 니 다.정수 에 있어 서 소수점 은 무효 문자 이기 때 문 입 니 다.일부 예 는 다음 과 같다.parseInt("1234 blue");/returns 1234 parseInt("0xA"); //returns 10 parseInt("22.5"); //returns 22 parseInt("blue"); //returns NaN parseInt()방법 은 기본 모드 도 있 습 니 다.이 진,8 진,16 진 또는 다른 모든 진 문자열 을 정수 로 변환 할 수 있 습 니 다.기본 은 parseInt()방법의 두 번 째 매개 변수 로 지정 되 어 있 기 때문에 16 진법 의 값 을 분석 하려 면 parseInt()방법 을 다음 과 같이 호출 해 야 합 니 다:parseInt("AF",16);/returns 175 물론 이 진,8 진,심지어 10 진(기본 모드)에 대해 서 는 parseInt()방법 을 이렇게 호출 할 수 있 습 니 다:parseInt("10",2);//returns 2 parseInt("10", 8); //returns 8 parseInt("10", 10); //returns 10 이 10 진수 에 선도 0 이 포함 되 어 있다 면 기수 10 을 사용 하 는 것 이 좋 습 니 다.그래 야 외지 에서 8 진법 의 값 을 얻 을 수 있 습 니 다.예 를 들 어 parseInt("010");/returns 8 parseInt("010", 8); //returns 8 parseInt("010", 10); //returns 10 은 이 코드 에서 두 줄 코드 모두 문자열'010'을 하나의 숫자 로 해석 했다.첫 번 째 줄 코드 는 이 문자열 을 8 진법 의 값 으로 보고 두 번 째 줄 코드(성명 기수 8)와 같은 방식 으로 해석 합 니 다.마지막 줄 코드 성명 기수 가 10 이기 때문에 iNum 3 는 마지막 으로 10 입 니 다.parseFloat()방법 은 parseInt()방법의 처리 방식 과 비슷 합 니 다.위치 0 부터 모든 문 자 를 보고 첫 번 째 유효 하지 않 은 문 자 를 찾 을 때 까지 이 문자 의 이전 문자열 을 숫자 로 변환 합 니 다.그러나 이 방법 에 있어 서 첫 번 째 로 나타 난 소수점 은 유효 문자 이다.두 개의 소수점 이 있 으 면 두 번 째 소수점 은 무효 로 간주 되 며,parseFloat()방법 은 이 소수점 이전의 문자열 을 숫자 로 변환 합 니 다.이 는 문자열'22.34.5'가 22.34 로 해석 된다 는 뜻 이다.parseFloat()방법 을 사용 하 는 또 다른 차이 점 은 문자열 이 10 진법 으로 부동 소수점 을 표시 해 야 하 며 8 진법 이나 16 진법 으로 표시 해 서 는 안 된다 는 것 이다.이 방법 은 전도 0 을 무시 하기 때문에 8 진수 0908 은 908 로 해석 된다.16 진수 0xA 에 대해 이 방법 은 NaN 으로 돌아 갑 니 다.부동 소수점 에서 x 는 유효 문자 가 아니 기 때 문 입 니 다.이 밖 에 parseFloat()도 기본 모드 가 없다.다음은 parseFloat()방법 을 사용 하 는 예제 입 니 다.parseFloat("1234 blue");/returns 1234.0 parseFloat("0xA"); //returns NaN parseFloat("22.5"); //returns 22.5 parseFloat("22.34.5"); //returns 22.34 parseFloat("0908"); //returns 908 parseFloat("blue"); //returns NaN 2.강제 형식 변환 은 강제 형식 변환(type casting)을 사용 하여 변환 값 을 처리 할 수 있 는 형식 입 니 다.다른 종류의 값 이라도 강제 형식 변환 을 사용 하면 특정한 값 에 접근 할 수 있 습 니 다.ECMAScript 에서 사용 할 수 있 는 3 가지 강제 형식 은 다음 과 같 습 니 다.Boolean(value)―주어진 값 을 Boolean 형 으로 변환 합 니 다.Number(value)―주어진 값 을 숫자 로 변환 합 니 다(정수 나 부동 소수점 일 수 있 습 니 다).String(value)―주어진 값 을 문자열 로 변환 합 니 다.이 세 함수 중 하나 로 값 을 바 꾸 면 새 값 을 만 들 고 원본 값 에서 직접 변환 한 값 을 저장 합 니 다.이것 은 예상 치 못 한 결 과 를 초래 할 것 이다.변환 할 값 이 최소한 한 글자 의 문자열,0 이 아 닌 숫자 나 대상(다음 절 에 서 는 이 점 을 토론 합 니 다)일 때,Boolean()함 수 는 true 로 돌아 갑 니 다.이 값 이 빈 문자열,숫자 0,undefined 또는 null 이면 false 로 돌아 갑 니 다.다음 코드 세그먼트 로 Boolean 형의 강제 형식 변환 을 테스트 할 수 있 습 니 다.Boolean(""); //false C empty string Boolean("hi"); //true C non-empty string Boolean(100); //true C non-zero number Boolean(null); //false - null Boolean(0); //false - zero Boolean(new Object()); //true C object Number()의 강제 형식 변환 은 parseInt()과 parseFloat()방법의 처리 방식 과 비슷 하지만 일부 값 이 아 닌 전체 값 으로 변 환 됩 니 다.기억 하 십 니까?parseInt()과 parseFloat()방법 은 첫 번 째 잘못된 문자 이전의 문자열 만 바 꾸 기 때문에'4.5.6'은'4.5'로 변 환 됩 니 다.Number()로 강제 형식 변환 을 하면'4.5.6'은 전체 문자열 값 을 숫자 로 변환 할 수 없 기 때문에 NaN 으로 돌아 갑 니 다.문자열 값 이 완전히 바 뀌 면 Number()는 parseInt()방법 을 호출 할 지,parseFloat()방법 을 호출 할 지 판단 합 니 다.아래 표 는 서로 다른 값 에 Number()를 호출 하 는 방법 이 발생 하 는 상황 을 설명 한다.법 으로 결 과 Number(false)0 Number(true)1 Number(undefined)NaN Number(null)0 Number("5.5")5.5 Number("56")56 Number("5.6.7")NaN Number(new Object()NaN Number(100)100 마지막 강제 유형 변환 방법 String()이 가장 간단 하 다.모든 값 을 문자열 로 변환 할 수 있 기 때문이다.이러한 강제 형식 변환 을 실행 하려 면 매개 변수 로 전 달 된 값 의 toString()방법 을 호출 해 야 합 니 다.즉,1 을'1'로 바 꾸 고 true 를'true'로 바 꾸 고 false 를'false'로 바 꾸 는 것 입 니 다.문자열 로 강제로 변환 하 는 것 과 toString()을 호출 하 는 방법의 유일한 차이 점 은 null 이나 undefined 값 에 대한 강제 형식 변환 이 오 류 를 일 으 키 지 않 고 문자열 을 생 성 할 수 있다 는 것 입 니 다.var s1=String(null);/"null" var oNull = null; var s2 = oNull.toString(); //won't work,causes an error 3.js 변수 약 한 유형 으로 작은 예 를 들 어 보면 알 수 있 습 니 다.
var str= '012.345 '; var x = str-0; x = x*1; 상례 는 js 의 약 한 유형의 특징 을 이용 하여 산술 연산 만 하여 문자열 에서 숫자 로 의 유형 전환 을 실현 하 였 으 나 이 방법 은 추천 하지 않 습 니 다./대상 을 문자 function object2String(obj){var val,output="로 변환 합 니 다.if (obj) { output += "{"; for (var i in obj) { val = obj[i]; switch (typeof val) { case ("object"): if (val[0]) { output += i + ":" + array2String(val) + ","; } else { output += i + ":" + object2String(val) + ","; } break; case ("string"): output += i + ":'" + val + "',"; break; default: output += i + ":" + val + ","; } } output = output.substring(0, output.length-1) + "}"; } return output; } 배열 을 문자열 function array 2String(array){var output="로 변환 합 니 다.if (array) { output += "["; for (var i in array) { val = array[i]; switch (typeof val) { case ("object"): if (val[0]) { output += array2String(val) + ","; } else { output += object2String(val) + ","; } break; case ("string"): output += "'" + encodeURI(val) + "',"; break; default: output += val + ","; } } output = output.substring(0, output.length-1) + "]"; } return output; } function string2Object(string) { eval("var result = " + decodeURI(string)); return result; } function string2Array(string) { eval("var result = " + decodeURI(string)); return result; }이 날 형식 을 문자열 형식 으로 바 꾸 려 고 합 니 다.
= 10 ) { CurrentDate = CurrentDate + Month + "-"; } else { CurrentDate = CurrentDate + "0" + Month + "-"; } if (Day >= 10 ) { CurrentDate = CurrentDate + Day ; } else { CurrentDate = CurrentDate + "0" + Day ; } return CurrentDate; } /////////////////////////////////////////////////////// // 날짜 형식 을 문자열 형식 yyy-MM-dd hh:mm///////////////////////////////////////////////////function ChangeTimeToString(DateIn){var Year=0 으로 변환 합 니 다.var Month=0; var Day=0; var Hour = 0; var Minute = 0; var CurrentDate=""; //초기 화 시간 Year=DateIn.getYear();Month = DateIn.getMonth()+1; Day = DateIn.getDate(); Hour = DateIn.getHours(); Minute = DateIn.getMinutes(); CurrentDate = Year + "-"; if (Month >= 10 ) { CurrentDate = CurrentDate + Month + "-"; } else { CurrentDate = CurrentDate + "0" + Month + "-"; } if (Day >= 10 ) { CurrentDate = CurrentDate + Day ; } else { CurrentDate = CurrentDate + "0" + Day ; } if(Hour >=10) { CurrentDate = CurrentDate + " " + Hour ; } else { CurrentDate = CurrentDate + " 0" + Hour ; } if(Minute >=10) { CurrentDate = CurrentDate + ":" + Minute ; } else { CurrentDate = CurrentDate + ":0" + Minute ; } return CurrentDate; }