반응형
[JS]parseInt()와 Number() 사용시 주의사항

var i = "01";


document.write(parseInt(i)) ---> 출력결과 : 0
document.write(Number(i))   ---> 출력결과 : 1


주의해서 사용하세요.^^

 
 

 
     
  • 음. 저도 비슷한 경험이 있습니다. 지금은 어떤지 모르겠지만 제작년 겨울 작업하다가 보니 parseInt() 시 07,08,09 정도에서 전부 값을 0으로 던지는 바람에 그부분을 Number()로 다 바꾸었던 기억이 나는군요. 그게 01에서도 같은 현상이 발생하지는 않았던거 같은데.. 음 그때는 IE 5.5로 테스트 했었지요. 지금도 비슷한 경우가 있다면 거참. 언제 고쳐질런지... ㅡㅡ;
  • 지나가다
  • 2003-07-10 16:57:48
  • x
  • 자바스크립트에서
    0으로 시작하는 스트링을 parseInt 하면 8진법 파싱합니다.
    그러나 8, 9 이런 글자가 포함되어 있으면 무조건 결과가 0입니다. (예외상황도 없이...)

    parseInt("01") 은 8진법 파싱 규칙에 따라 정확하게 1 이 나옵니다.
  • 자바클루
  • 2003-07-14 17:48:19
  • x
  • 아~하~ 그러쿠나~아~하~그러쿠나~
    감사요.
  • 붕냥붕
  • 2003-07-15 11:58:41
  • x
  • 저두 비슷한 경험이 있긴하는데 해결은...
    parseInt(i, 10);
    이렇게 하면 10진법으로 파싱하는데여..
  • 찡어
  • 2003-07-22 09:30:21
  • x
  • 정말 감사합니다...
    덕분에 오류원인을 알았습니다..(_ _)
  • gtman
  • 2003-07-31 11:43:00
  • x
  • 아.....
    0로 시작하니까...8진법...
    그렇구나....
  • ZZaN
  • 2003-08-11 21:32:45
  • x
  • number() 는 널값도 0으로 잘 되요~~
    parseInt()는 ㅡㅡ; NaN인가..이걸로 나오지요~
  • 하얀빛
  • 2003-09-19 15:18:12
  • x



내장 함수 …………………………………………………


내장함수란 자바스크립트 언어 자체에서 지원하는 함수로 자주 사용할 것으로 예상되는 것들을 함수로 만들어 둔 것을 얘기한다.
다음은 사용자 입력값을 가지고 계산을 할 때 꼭 필요한 함수들이다.!!!

■ eval()


eval("50")+50 또는

inta="50"
eval(inta)+50
숫자 형태를 가진 문자열이나 표현식을
숫자로 바꿔준다.

* 사용자 입력값을 계산을 위해 사용한다면 꼭 필요한 조치이다.
<script language="javascript">

document.write("50"+50) // 계산이 안되고 문자열 결합이 됨, 5050
document.write(eval("50")+50) // 100으로 계산됨

</script>



■ parseInt() / parseFloat()


paresInt("10.5")+50 또는

inta="10.5"
parseInt (inta)+50
숫자 형태를 가진 문자열이나 표현식을
정수나 실수로 바꿔준다.

* 사용자 입력값을 계산을 위해 사용한다면 꼭 필요한 조치이다.
<script language="javascript">

document.write("10.5"+50) // 계산이 안되고 문자열 결합이 됨
document.write(parseInt("10.5")+50) // 60으로 계산됨
document.write(parseFloat("10.5")+50) // 60.5으로 계산됨

</script>



■ isNaN()


isNaN("10.5") 또는

inta="10.5"
isNaN(inta)


// NaN : Not a Number
표현식이나 값이 숫자가 아닌지를 true/false 로 리턴함.

* 숫자가 아니면 true를 !!! (주의)

* 사용자 입력값이 숫자가 아닌지/인지를
판단하고자 할 때!!!
<script language="javascript">

document.write(isNaN("0050")) // false
document.write(isNaN("홍길동")) // true
document.write(isNaN(50)) // false (숫자일 경우 fasle!!!)

</script>



■ escape() / unescape()


escape("가") 또는

stra="가"
escape(stra)
unescape("%uAC00") 또는

inta="%uAC00"
unescape(inta)

알파벳과 숫자 및 *, @, -, _ , + , ., / 를 제외한 문자를 모두 16진수 문자로 바꾸어 준다

왼쪽과 반대로
<script language="javascript">

document.write(escape("가"))
document.write(unescape("%uAC00")) // "가"

</script>

parseInt()와 Number() 사용시 주의사항



Posted by 1010