- 모든 객체의 유일한 최상위 객체를 의미한다.
- browser-side에서는 window, server-side에서는 global
- 실행 콘텍스트에 컨트롤이 들어가기 이전에 생성되어 constructor가 없기 때문에 new 연산자를 사용할 수 없다. 즉, 개발자가 전역 객체를 생성하는 것은 불가능하다.
- 전역 스코프를 갖게 된다.
- 자식 객체를 사용할 때 전역 객체의 기술은 생략 가능 (window.document → document) 하지만, 이름이 충돌하는 경우엔 명확하게 기술해야 한다.
(1) 전역 프로퍼티(Global property)
- 전역 객체의 프로퍼티를 의미한다.
- 전역에 사용하는 값을 나타내기 위해 사용한다.
- Infinity : 양, 음의 무한대를 나타내는 숫자 값
- NaN : Not a Number의 약자. 숫자가 아님을 나타내는 숫자 값
- undefined : 변수의 값이 할당되지 않아 자료형이 정해지지 않는 것 나타내는 값
console.log(global.Infinity); // Infinity
console.log(1/0); // Infinity 양의 무한대
console.log(-1/0); // -Infinity 음의 무한대
console.log(Number.MAX_VALUE * 2); // 1.7976931348623157e+308 * 2
console.log(typeof Infinity); // number
////////////////////////
console.log(global.NaN); // NaN
console.log(Number('xyz')); // NaN
console.log(1 * 'string'); // NaN
console.log(typeof NaN); // number
////////////////////////
console.log(global.undefined); // undefined
var a;
console.log(a); // undefined
console.log(typeof undefined); // undefined
(2) 전역 함수
- 전역 객체의 메서드이다.
- eval() : 매개변수에 전달된 문자열 구문 또는 표현식을 평가 및 실행한다. 보안이 취약하므로 사용은 가급적 금지된다.
eval(string); // 기본 문법
var a = eval('1 + 2');
console.log(a); // 3
var b = 'b';
var c = 'c';
console.log(eval('b * c')); // NaN
- isFinite() : 매개변수에 전달된 값이 정상적인 유한수 인지 결과를 boolean으로 반환한다. 숫자가 아닐 경우 숫자로 변환 후 진행한다.
isFinite(testValue); // 기본 문법
console.log(isFinite(Infinity)); // false
console.log(isFinite(NaN)); // false
console.log(isFinite('Hello')); // false
console.log(isFinite(0)); // true
console.log(isFinite(2e64)); // true
console.log(isFinite('10')); // true: '10' → 10
console.log(isFinite(null)); // true: null → 0
- isNaN() : 매개변수에 전달된 값이 NaN인지 결과를 boolean으로 반환한다. 숫자가 아닐 경우 숫자로 변환 후 진행한다.
isNaN(testValue); // 기본 문법
console.log(isNaN(NaN)); // true
console.log(isNaN(undefined)); // true: undefined → NaN
console.log(isNaN({})); // true: {} → NaN
console.log(isNaN('wangi')); // true: 'wangi' → NaN
console.log(isNaN(true)); // false: true → 1
console.log(isNaN(null)); // false: null → 0
console.log(isNaN(37)); // false
console.log(isNaN('37')); // false: '37' → 37
console.log(isNaN('')); // false: '' → 0
console.log(isNaN(' ')); // false: ' ' → 0
console.log(isNaN(new Date())); // false: new Date() → Number
console.log(isNaN(new Date().toString())); // true: String → NaN
- parseFloat() : 매개변수에 전달된 문자열을 부동소수점 숫자로 변환하여 반환한다. 문자열의 첫 숫자만 반환된다.
parseFloat(string); // 기본 문법
console.log(parseFloat('3.14')); // 3.14
console.log(parseFloat('34 45 66')); // 34
console.log(parseFloat(' 60 ')); // 60
console.log(parseFloat('26 years')); // 40
console.log(parseFloat('wangi age is 26')); // NaN
- parseInt() : 매개변수로 전달된 문자열을 정수형 숫자로 바꿔 반환한다. 반환값은 항상 10진수이다.
console.log(parseInt(10)); // 10
console.log(parseInt(10.123)); // 10
console.log(parseInt('10')); // 10
console.log(parseInt('10.123')); // 10
console.log(parseInt('10', 2)); // 2 2진수 10을 10진수로 바꿔라
console.log(parseInt('10', 8)); // 8 8진수 10을 10진수로 바꿔라
console.log(parseInt('10', 16)); // 16 16진수 10을 10진수로 바꿔라
console.log(parseInt('1 2 3')); // 1
- encodeURI() / decodeURI() : 매개변수로 전달된 URI를 인코딩/디코딩한다.
- 인코딩은 이스케이프를 뜻하며 이스케이프는 ASCII Character-set으로 변환하는 것이다.(단, 알파벳, 숫자, -_.!~*'()는 제외한다.)
encodeURI(URI); // 기본 문법
decodeURI(encodedURI)
var uri = 'http://example.com?name=박완기&job=programmer&teacher';
var enc = encodeURI(uri);
var dec = decodeURI(enc);
console.log(enc); // http://example.com?name=%EC%9D%B4%EC%9B%85%EB%AA%A8&job=programmer&teacher
console.log(dec); // http://example.com?name=박완기&job=programmer&teacher
- encodeURIComponent() / decodeURIComponent() : 매개변수로 전달된 URI component(구성 요소)를 인코딩/디코딩한다.
- encodeURIComponent()는 인수를 쿼리스트링의 일부라고 간주한다. 따라서 =,?,&를 인코딩한다.
encodeURIComponent(URI); // 기본 문법
decodeURIComponent(encodedURI);
var uriComp = '박완기&job=programmer&teacher';
var enc = encodeURI(uriComp);
var dec = decodeURI(enc);
console.log(enc); // %EC%9D%B4%EC%9B%85%EB%AA%A8&job=programmer&teacher
console.log(dec); // 박완기&job=programmer&teacher
enc = encodeURIComponent(uriComp);
dec = decodeURIComponent(enc);
console.log(enc); // %EC%9D%B4%EC%9B%85%EB%AA%A8%26job%3Dprogrammer%26teacher
console.log(dec); // 박완기&job=programmer&teacher
'JavaScript' 카테고리의 다른 글
[JavaScript] Math (0) | 2023.10.20 |
---|---|
[JavaScript]Number (1) | 2023.10.20 |
[JavaScript]Built-in Object (0) | 2023.10.19 |
[JavaScript]객체 지향 프로그래밍 (0) | 2023.10.18 |
[JavaScript]클로저(closure) (0) | 2023.10.18 |