본문 바로가기
JavaScript

[JavaScript]Global Object

by eddypark 2023. 10. 19.

- 모든 객체의 유일한 최상위 객체를 의미한다.

- 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