쑤쑤_CS 기록장
22. 전역 객체 본문
전역 객체(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 전체라고 간주하며 파라미터 구분자인 =, ?, &를 인코딩하지 않는다.
'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 |