쑤쑤_CS 기록장

22. 전역 객체 본문

IT 지식 기록/JavaScript 정리

22. 전역 객체

(╹◡╹)_ 2020. 12. 24. 17:06
728x90

전역 객체(Global Object)

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

일반적으로 Browser-side에서는 window, Server-side(Node.js)에서는 global 객체를 의미한다.

 

  • 전역 객체는 실행 컨텍스트에 컨트롤이 들어가기 이전에 생성이 되며 constructor가 없기 때문에 new 연산자를 이용하여 새롭게 생성할 수 없다. new 연산자를 이용하여 새롭게 생성할 수 없다. 
    -> 개발자가 전역 객체를 생성하는 것은 불가능하다.
  • 전역 객체는 전역 스코프(Global Scope)를 갖게 된다.
  • 전역 객체의 자식 객체를 사용할 때 전역 객체의 기술은 생략할 수 있다. 예를 들어 document 객체는 전역 객체 window의 자식 객체로서 window.document…와 같이 기술할 수 있으나 일반적으로 전역 객체의 기술은 생략한다.
  • 전역 객체는 전역 변수(Global variable)를 프로퍼티로 가지게 된다. 다시 말해 전역 변수는 전역 객체의 프로퍼티이다.
  • 글로벌 영역에 선언한 함수도 전역 객체의 프로퍼티로 접근할 수 있다. 다시 말해 전역 함수는 전역 객체의 메소드이다.

 

#1. 전역 프로퍼티

: 전역 객체의 프로퍼티를 의미한다.

애플리케이션 전역에서 사용하는 값들을 나타내기 위해 사용한다.

 

  • Infinity

: 양/음의 무한대를 나타내는 숫자 값

console.log(window.Infinity); // Infinity

console.log(3/0); // Infinity

console.log(-3/0); // -Infinity

console.log(Number.MAX_VALUE * 2); // 1.7976931348623157e+308 * 2

console.log(typeof Infinity); // number

 

  • NaN

: 숫자가 아님(Not-a-Number)을 나타내는 숫자값 NaN을 갖는다.

console.log(window.NaN); // NaN

console.log(Number('xyz')); // NaN
console.log(1 * 'string');  // NaN
console.log(typeof NaN);    // number

 

 

  • undefined

: 원시타입 undefined를 값으로 갖는다.

console.log(window.undefined); // undefined

var foo;
console.log(foo); // undefined
console.log(typeof undefined); // undefined

 

#2. 전역 함수 

: 애플리케이션 전역에서 호출할 수 있는 함수로서 전역 객체의 메소드이다.

 

  • eval()

매개변수에 전달된 문자열 구문 또는 표현식을 평가 또는 실행, 보안에 취약하여 사용은 가급적 금지해야한다.

 

  • isFinite()

매개변수에 전달된 값이 정상적인 유한수인지 검사하여 그 결과를 Boolean으로 반환한다.

전달된 값이 숫자가 아닌 경우, 숫자로 변환한 후 검사를 수행한다.

console.log(isFinite(Infinity));  // false
console.log(isFinite(NaN));       // false
console.log(isFinite('Hello'));   // false
console.log(isFinite('2005/12/12'));   // 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(NaN)       // true
isNaN(undefined) // true: undefined → NaN
isNaN({})        // true: {} → NaN
isNaN('blabla')  // true: 'blabla' → NaN

isNaN(true)      // false: true → 1
isNaN(null)      // false: null → 0
isNaN(37)        // false

// strings
isNaN('37')      // false: '37' → 37
isNaN('37.37')   // false: '37.37' → 37.37
isNaN('')        // false: '' → 0
isNaN(' ')       // false: ' ' → 0

// dates
isNaN(new Date())             // false: new Date() → Number
isNaN(new Date().toString())  // true:  String → NaN

 

  • parseFloat()

매개변수에 전달된 문자열을 부동소수점 숫자(floating point number)로 변환하여 반환한다.

 

  • parseInt()

매개변수에 전달된 문자열을 정수형 숫자(Integer)로 해석(parsing)하여 반환한다. 반환값은 언제나 10진수이다.

parseInt(10);     // 10
parseInt(10.123); // 10

parseInt('10');     // 10
parseInt('10.123'); // 10

parseInt('10', 2);  // 2진수 10 → 10진수 2
parseInt('10', 8);  // 8진수 10 → 10진수 8
parseInt('10', 16); // 16진수 10 → 10진수 16

- 첫번째 매개변수에 전달된 값이 문자열이 아니면 문자열로 변환한 후 숫자로 해석하여 반환한다.

- 2번째 매개변수에는 진법을 나타내는 기수(2 ~ 36)를 지정할 수 있다. 

- 두번째 매개변수에 진법을 나타내는 기수를 지정하면 첫번째 매개변수에 전달된 문자열을 해당 기수의 숫자로 해석하여 반환한다. 이때 반환값은 언제나 10진수이다.

 

- 두번째 매개변수에 진법을 나타내는 기수를 지정하지 않더라도 첫번째 매개변수에 전달된 문자열이 “0x” 또는 “0X”로 시작한다면 16진수로 해석하여 반환한다.

 

- 첫번째 매개변수에 전달된 문자열에 공백이 있다면 첫번째 문자열만 해석하여 반환하며 전후 공백은 무시된다. 만일 첫번째 문자열을 숫자로 파싱할 수 없는 경우, NaN을 반환한다.

 

 

  • encodeURI() / decodeURI()

encodeURI()은 매개변수로 전달된 URI(Uniform Resource Identifier)를 인코딩한다.

+ 인코딩이란 URI의 문자들을 이스케이프 처리하는 것을 의미한다. 

decodeURI()은 매개변수로 전달된 URI을 디코딩한다.

 

  • encodeURIComponent() / decodeURIComponent()

encodeURIComponent()은 매개변수로 전달된 URI 구성요소를 인코딩한다.

그리고 인수를 쿼리스트링의 일부라고 간주한다. 따라서 =, ?, &를 인코딩한다.

 

반면 encodeURI()는 인수를 URI 전체라고 간주하며 파라미터 구분자인 =, ?, &를 인코딩하지 않는다.

 

728x90

'IT 지식 기록 > JavaScript 정리' 카테고리의 다른 글

24. 수학 상수와 함수를 위한 Math 객체  (0) 2020.12.24
23. Number 래퍼 객체  (0) 2020.12.24
21. 빌트인 객체  (0) 2020.12.24
20. 자바스크립트 객체지향 프로그래밍  (0) 2020.12.24
19. 클로저  (0) 2020.12.24
Comments