[javascript 기초 강좌] 7. 내장함수 ( eval / parseInt / parseFloat / Number / isFinite / isNaN / escape / unescape / encodeURI / decodeURI / encodeURIComponent / decodeURIComponent )

2016.01.27 11:31language/javascript

javascript 내장함수

내장함수는 javascript(자바스크립트)가 자체적으로 제공해주는 함수이다.

함수란 특정 기능을 수행하는 프로그램의 집합이다.

 

 

1. eval(수식문자열)

'수식문자열'을 계산 가능한 식으로 변환하여 처리한 결과를 반환한다.

쉽게 말해서 문자열을 변수나 함수 등으로 변환하여 주는 함수이다.

 

예제를 보고 따라해 보면 무슨 말인지 이해하기 쉬울 것이다.

 

 

 

더 나아가서 문자열로 된 Json 데이터를 Json타입으로 변경하거나 함수를 사용가능하도록 변경하는 등 여러 방법으로 사용가능하다. 지금은 필요없으니까 이런 정도가 있구나 하고 알면 된다.

 

 

2. parseInt(문자열, 진수) / parseFloat(문자열) / Number(문자열)

위 함수들은 문자열을 숫자로 변환하는 함수들이다.

parseInt : 문자열을 정수형으로 변환한다. 진수는 10,2,8,16 중 하나를 사용하고 기본값은 10이다.

parseFloat : 문자열을 실수형으로 변환한다.

Number : 문자열을 숫자형으로 변환한다.

 

예제를 보고 이해하자.

 

 

3. isFinite(값) / isNaN(값)

숫자 및 숫자여부를 판단하는 함수이다.

- isFinite(값) : 값을 숫자형으로 변환할 수 있으면 true, 그렇지 않으면 false
- isNaN(값) : 값을 숫자형으로 변활할 수 없으면 true, 그렇지 않으면 false

 

 

4. escape(문자열) / unescape("%16진수코드값") / encodeURI(uri), decodeURI(encodedURI), encodeURIComponent(uriComponent), decodeURIComponent(encodedURI)

문자열을 부호화 하는 함수이다. 통칭 인코딩, 디코딩 함수라고 한다.

 

각 함수들의 특징에 대해 알아본다.

 escape(문자열)

 - 문자열의 각 문자들을 '%16진수코드값' 형태로 변환

 - 영문 알파벳과, 숫자, 일부 특수문자(@, *, -, _, +, ., /)를 제외 문자만  인코딩

 - 1바이트 문자는 '%XX' 형태로 표시

 - 한글, 한자등(2바이트)은 '%u16진수4자리'로 표시

 - 한글이 깨지는 것을 방지하기 위하여 사용

 unescape("%16진수코드값")

 - 코드값에 맞는 문자로 변환 (escape 로 변환된 코드값만 문자로 변환)

 encodeURI(uri)

 - 인터넷 주소에 사용되는 일부 특수문자(:, ;, /, =, ?, & 등)를 제외 문자만 인코딩

 - 보통 인터넷 주소 전체(파라미터 전체)를 인코딩할 때 사용

 decodeURI(encodedURI)

 - encodeURI 로 변환(인코딩)한 값을 다시 원래대로 변환(디코딩)

 encodeURIComponent(uriComponent)

 - encodeURI이 제외한 일부 특수문자까지도 인코딩

 - url 전체가 파라미터로 전송될 경우 사용가능

 decodeURIComponent(encodedURI)

 - encodeURIComponent 로 변환(인코딩)한 값을 다시 원래대로 변환(디코딩)

 

페이지의 charset 이 다를 경우 한글이 특히 깨지는 경우가 다분하다.

그럴 경우에는 escape를 이용하여 한글을 변환하여 사용하면 되겠다. encodeURI 를 사용해도 무관하다.

url의 파라미터 전체를 변환해야 할 경우에는 encodeURI 사용하는것이 좋겠으며 url 자체가 파라미터로 들어가기 된다면 encodeURIComponent 를 사용해야 한다.

 

ps.지금은 이게 무슨말인가 싶겠지만 나중에 jsp 나 기타 언어로 웹 어플리케이션 (홈페이지)를 만들 때 url 전송을 하게 될것이고 그때 다시 돌아와서 인코딩, 디코딩 관련 부분을 읽게 될것이다. 그러니 지금은 그렇구나 하고 넘어가는 것이 좋겠다.

 

 

 * 이 밖에도 타이머나 기타 함수가 존재하지만 기초단계에서 큰 필요성을 느끼지 못해 생략했다.