LECTURE/JavaScript
global object - 빌트인 전역 프로퍼티, 빌트인 전역 함수
heywoo
2023. 2. 9. 22:42
global object
global object는 코드가 실행되기 이전 단계에 자바스크립트 엔젠에 의해 어떤 객체보다도 먼저 생성되는 특수한 객체
- Node.js 환경에서는 global이 전역 객체이고, 브라우저 환경에서는 window가 전역 객체이다.
- 전역 객체는 계층 구조 상 어떤 객체에도 속하지 않는 최상위 객체이다. (프로토타입 상속의 의미 X)
built in global property
전역 프로퍼티는 global을 생략하고 참조할 수 있다.
1.Infinity : 무한대를 나타내는 숫자 값
console.log(global.Infinity === Infinity); //true
console.log(10/0); //Infinity
console.log(-10/0); //-Infinity
console.log(typeof Infinity); // number
2. NaN : 숫자가 아님(Not a Number)을 나타내는 숫자 값
=> Number.NaN 프로퍼티와 같다.
console.log(global.NaN); //NaN
console.log(Number('abc')); //NaN
console.log(10 * 'abc'); //NaN
console.log(typeof NaN); //number
3. undefinded : 원시 타입 undefined
console.log(global.undefinded);
let nothing;
console.log(nothing);
console.log(typeof undefined); //undefined
built in global function
1.isFinite
전달 받은 인수가 정상적인 유한수인지 검사하여 유한수이면 true를 반환하고, 무한수이면 false를 반환
전달 받은 인수가 숫자가 아닌 경우 숫자로 타입 변환 후 검사를 수행하며, NaN으로 평가되는 값이면 false를 반환
console.log(isFinite(10)); // true
console.log(isFinite('10')); // true 형변환
console.log(isFinite(null)); // true 형변환
console.log(isFinite(Infinity)); // false
console.log(isFinite(-Infinity)); // false
console.log(isFinite(NaN)); // false
console.log(isFinite('abc')); // false
2.isNaN
전달 받은 인수가 NaN인지 검사하여 그 검사 결과를 불리언 타입으로 반환
전달 받은 인수가 숫자가 아닌 경우 숫자로 타입 변환 후 검사를 수행
console.log(isNaN(NaN)); // true
console.log(isNaN(10)); // false
console.log(isNaN('abc')); // true
console.log(isNaN('10')); // false
console.log(isNaN('')); // false ('' => 0)
console.log(isNaN(true)); // false (true => 1)
console.log(isNaN(false)); // false (false => 0)
console.log(isNaN(undefined)); // true
console.log(isNaN({})); // true
3.parseFloat : 전달받은 문자열 인수를 부동 소수점 숫자, 실수로 해석하여 반환
console.log(parseFloat('10.01')); // 10.01
console.log(parseFloat('10')); // 10
// 공백으로 구분 된 문자열은 첫 번째 문자열만 변환
console.log(parseFloat('10 20 30')); // 10
// 숫자가 아닌 문자열은 제외하고 변환
console.log(parseFloat('10cm')); // 10
// 첫 번째 문자열을 숫자로 변환할 수 없다면 변환 불가
console.log(parseFloat('GS25')); // NaN
// 앞뒤 공백은 무시
console.log(parseFloat(' 1004 ')); // 1004
4. parseInt : 전달받은 문자열 인수를 정수로 해석하여 반환
console.log(parseInt('10')); // 10
console.log(parseInt('10.01')); // 10
5.encodeURI
URI(인터넷에 있는 자원을 나타내는 유일한 주소)를 문자열로 전달받아 이스케이프 처리를 위해 인코딩한다.
네트워크를 통해 정보를 공유할 때 어떤 시스템에서도 읽을 수 있는 아스키 문자 셋으로 변환
const uri = 'http://greedy.com?name=홍길동&job=student';
const enc = encodeURI(uri);
console.log(enc);
// http://greedy.com?name=%ED%99%8D%EA%B8%B8%EB%8F%99&job=student
6.decodeURI
인코딩 된 URI를 인수로 전달 받아 이스케이프 처리 이전으로 디코딩한다.
const dec = decodeURI(enc);
console.log(dec);
// http://greedy.com?name=홍길동&job=student
7.encodeURIComponent
URI 구성 요소를 인수로 전달 받아 알파벳, 0~9의 숫자, - _ . ! ~ * ' ( ) 문자는 제외하고 인코딩한다.
쿼리 스트링 구분자로 사용 되는 =, ?, &까지 인코딩한다.
const uriComp = 'name=홍길동&job=student';
const encComp = encodeURIComponent(uriComp);
console.log(encComp); // name%3D%ED%99%8D%EA%B8%B8%EB%8F%99%26job%3Dstudent
// decodeURIComponent
const decComp = decodeURIComponent(encComp);
console.log(decComp); // name=홍길동&job=student