본문 바로가기

프로그래밍/JavaScript

[JavaScript 요약 정리] 8. 내장 함수(Built-in Function)

8. 내장 함수

1) 타이머 함수

- setTimeout(function, millisecond) : 지정된 시간 후 함수를 한 번 실행(밀리초 단위)

- setInterval(function, millisecond) : 지정된 시간마다 함수를 반복 실행

*위 두 함수는 타이머 id를 리턴값으로 가짐 -> id를 변수에 저장해둬야 중지 가능

- clearTimeout(id) : setTimeout 함수 중지

- clearInterval(id) : setInterval 함수 중지


2) 인코딩과 디코딩 함수

- escape(), unescape()

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

1바이트 문자는 %XX, 2바이트 문자는 %uXXXX 형태로 변환

- encodeURI(uri), decodeURI(encodedURI)

escape 함수와 같으나 일부 특수문자(: ; / = ? &) 제외

- encodeURIComponent(uriComponent), decodeURIComponent(encodedURI)

알파벳과 숫자를 제외한 모든 문자 인코딩

utf-8 인코딩과 동일


3) 코드 실행 함수 eval

- 문자열을 코드로 실행할 수 있는 함수

- 형식: eval(string);

- 예시

var a = ''; // a변수 문자열 타입 초기화

a+='var num=3;'; // a변수에 num 변수 선언 코드를 추가

a+='alert(num);'; // a변수에 알림창 발생 코드를 추가

eval(a); // a에 저장된 스크립트가 실행되어 알림창 발생

var b = num; // eval로 실행된 코드에서 정의한 변수 num 이용 가능(스크립트 실행으로 인해)

-> b의 값: 3

*주의점: 스크립트 실행이 가능하기 때문에 보안상의 문제 발생 소지가 있음


4) 숫자 관련 함수

- 숫자 확인 함수

-> 자바스크립트의 숫자 타입 중 Infinity(무한대)와 NaN(not a number)을 확인하는 함수

isFinite() : 무한한 값인지 확인

isNaN() : NaN인지 확인

*자바스크립트에서는 숫자를 0으로 나누면 에러가 나지 않고 infinity라는 값이 들어감


- 숫자 변환 함수

Number(string) : 문자열을 정수값으로 변환(숫자로 변환할 수 없을 때 NaN 반환)

parseInt(string) : 문자열을 정수값으로 변환(숫자로 변환할 수 있을 때 까지만 변환)

parseFloat(string) : 문자열을 실수값으로 변환

- parse함수는 Number함수를 보완하기에 위해 생긴 함수

-> 숫자+문자열 형태의 문자열 변환 가능(ex. parseInt('1000원') = 1000)

-> 첫 문자부터 계산하기 때문에 첫 문자가 수가 아닐 땐 변환 불가(ex. parseInt('$10')=NaN)

- 매개변수에 ('문자열', 16) 과 같이 진법을 입력하면 해당 진법의 수로 인식

*주의할 점

문자열이 0으로 시작하면 8진수, 0x로 시작하면 16진수로 인식

parseFloat의 경우 문자열 중간에 e가 들어가면 자릿수로 인식