Global 객체와 그 멤버
Global 객체는 지금까지 등장한 객체와 다르다. 인스턴스화 하는 것도 불가능하고 method를 호출할 수도 없다.
Global 객체란 global 변수나 global 함수를 관리하기 위해서 Javascript가 자동으로 생성하는 편의적인 객체이다.
global 변수/함수는 함수의 밑에 속하지 않는 톱 레벨의 변수/함수를 말하고 직접 정의하는 것도 가능하지만 Javascript에서도 몇가지를 디폴트로 제공하고 있다.
분류 | 멤버 | 개요 |
특수값 | NaN | 수치가 아니다. Not a Number |
| undefined | 미정의 값 |
인코드 | encodeURI(str) | 문자열을 URI 인코딩 |
| decodeURI(str) | 문자열을 URI 디코딩 |
| encodeURIComponent(str) | 문자열을 URI 인코딩 |
| decodeURIComponent(str) | 문자열을 URI 디코딩 |
위와같이 자주 사용하는 샘플들이 있다.
값의 명시적인 변환
Javascript는 데이터형에 관대한 언어로 문맥 상황에 따라 적절한 데이터형으로 자동으로 변환해준다. 그러나 때로는 이 변환 때문에 버그가 발생하기도 한다.
이런 이유 때문에 Javascript에서는 데이터형을 명시적으로 변환하기 위한 방법을 제공하고 있다.
예를 들어서 123xxx와 같이 숫자와 문자가 섞인 데이터가 있을 때 parseXxxxx 함수는 123으로 해석 가능한 부분을 수치로 취급한다.
문자열과 수치의 변환에서 산술 연산자 +, -를 이용할 수도 있다.
document.writeln(typeof(123+'')); // string
document.writeln(typeof('123'-0)); // number
+ 연산자는 주어진 오퍼랜드 중 한쪽이 문자열인 경우에 다른 한쪽도 자동적으로 문자열로 변환한 뒤에 연결한다. 그래서 첫째 라인에서는 수치 123을 문자열로 변환했다.
- 연산자는 주어진 오퍼랜드 중 한쪽이 수치인 경우에 다른 한쪽도 자동적으로 수치로 변환한 후 감산을 행한다. 그래서 둘째 라인에서는 문자열 123을 숫자로 변환했다.
+ 연산자는 가산 연산자와 문자열 연결 연산자의 두 성격을 가지고 있어서 오퍼랜드의 다른 한쪽이 문자열인 경우, + 연산자는 문자열 연결 연산자로서 해석이 된다.
쿼리 정보를 이스케이프 처리하기
URL 끝 부분의 ? 이후에 키=값&의 형식으로 기술되고 있는 것을 커리 정보라고 한다.
이 쿼리 정보의 ?나 =, % 등은 사용할 수가 없다. 그래서 이러한 문자가 쿼리 정보로 포함된 경우에는 문자열을 변환할 필요가 있다.
이러한 처리를 URI encode라고 한다.
var str = '!"#$%&()+-*/@~_|;:,.';
document.writeln(encodeURI(str)); // !%22#$%25&()+-*/@~_%7C;:,.