[내장 객체] - 전역 객체의 프로퍼티 & 함수

Donggu(oo)·2023년 1월 22일
0

JavaScript

목록 보기
32/49
post-thumbnail

1. 내장 전역 프로퍼티


  • 내장 전역 프로퍼티는 전역 객체의 프로퍼티를 의미한다. 주로 애플리케이션 전역에서 사용하는 값을 제공한다.

1) Infinity

  • Infinity 프로퍼티는 무한대를 나타내는 숫자값 Infinity를 갖는다.
// 전역 프로퍼티는 window를 생략하고 참조할 수 있다.
console.log(window.infinity === Infinity);  // true

// 양의 무한대
console.log(3/0); Infinity
// 음의 무한대
console.log(-3/0);  -Infinity
// Infinity는 숫자값이다.
console.log(typeof Infinity);  // number

2) NaN

  • NaN 프로퍼티는 숫자가 아님을 나타내는 숫자값 NaN(Not a Number)을 갖는다. NaN 프로퍼티는 Number.NaN 프로퍼티와 같다.
console.log(window.NaN);  // NaN

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

3) undefined

  • undefined 프로퍼티는 원시 타입 undefined를 값으로 갖는다.
console.log(window.undefiend);  // undefiend

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

2. 내장 전역 함수


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

1) eval

  • eval 함수는 자바스크립트 코드를 나타내는 문자열을 인수로 전달받는다. 전달받은 문자열 코드가 표현식이라면 eval 함수는 문자열 코드를 런타임에 평가하여 값을 생성하고, 전달받은 인수가 표현식이 아닌 문이라면 문자열 코드를 런타임에 실행한다.
// 표현식인 문
eval('1 + 2;');  // 3
// 표현식이 아닌 문
eval('var x = 5;')  // undefiend

// eval 함수에 의해 런타임에 변수 선언문이 실행되어 x 변수가 선언되었다.
console.log(x);  // 5

// 객체 리터럴은 반드시 괄호로 둘러싼다.
const o = eval('({ a: 1})');
console.log(o);  // {a: 1}

// 함수 리터럴은 반드시 괄호로 둘러싼다.
const f = eval('(function() { return 1; })');
console.log(f());  // 1
  • 인수로 전달받은 문자열 코드가 여러 개의 문으로 이루어져 있다면 모든 문을 실행한 다음, 마지막 결과값을 반환한다.
eval('1 + 2; 3 + 4;');  // 7

2) isFinite

  • isFinite 함수는 전달받은 인수가 정상적인 유한수인지 검사하여 유한수이면 true를 반환하고, 무한수이면 false를 반환한다.

  • 전달받은 인수의 타입이 숫자가 아닌 경우, 숫자로 타입을 변환한 후 검사를 수행한다. 이때 인수가 NaN으로 평가되는 값이라면 false를 반환한다.

// 인수가 유한수이면 true을 반환한다.
isFinite(0);  // true
isFinite(2e64);  // true
isFinite('10');  // true: '10' -> 10
isFinite(null);  // true: null -> 0

// 인수가 무한수 또는 NaN으로 평가되는 값이라면 false를 반환한다.
isFinite(Infinity);  // false
isFinite(-Infinity);  // false

// 인수가 NaN으로 평가되는 값이라면 false를 반환한다.
isFinite(NaN);  // false
isFinite('Hello');  // false
isFinite('2005/12/12');  // false

3) isNaN

  • 전달받은 인수가 NaN인지 검사하여 그 결과를 boolean 타입으로 반환한다. 전달받은 인수의 타입이 숫자가 아닌 경우 숫자로 타입을 변환한 후 검사를 수행한다.
// 인수가 숫자일 경우
isNaN(NaN);  // Not a Number(숫자가 아님)이기 때문에 true 반환
isNaN(10);  // 숫자이기 때문에 false 반환

// 인수가 문자열일 경우
isNaN('blabla');  // true : 'blabla' -> NaN
isNaN('10');  // false : '10' -> 10
isNaN(10.12);  // false : '10.12' -> 10.12
isNaN('');  // false : '' -> 0
isNaN(' ');  // false : ' ' -> 0

// 인수가 불리언일 경우
isNaN(true);  // false : true -> 1
isNaN(null);  // false : null -> 0

// 인수가 undefined일 경우
isNaN(undefined);  // true : undefiend -> NaN

// 인수가 객체일 경우
isNaN({});  // true : {} -> NaN

// 인수가 date일 경우
isNaN(new Date());  // false : new Date() -> Number
isNaN(new Date().toString());  // true : String -> NaN

4) parseFloat

  • parseFloat 함수는 전달받은 문자열 인수를 부동 소수점 숫자, 즉 실수로 해석하여 반환한다.
//문자열을 실수로 해석하여 반환한다
parseFloat('3.14');
77- 3.14
parseFloat('10.08');  // 10

//공백으로 구보된 문자열은 첫 번째 문자열만 번환한다.
parseFloat('34 45 66');  // 34
parseFloat('40 years');  // 48
           
//첫 번째 문자열을 숫자로 변환할 수 없다면 NaN을 반환한다.
parseFloat('He was 48');  // NaN

//앞뒤 공매은 무시된다.
parseFloat(' 60 ');  // 60

5) parseInt

  • parseInt 함수는 전달받은 문자열을 특정 진수의 정수로 변환하여 반환한다.
// 문자열을 정수로 해석하여 반환한다.
parseInt('10');  // 10
parseInt('10.123');  // 10

// 전달받은 인수가 문자열이 아니면 문자열로 변환한 다음 정수로 해석하여 반환한다.
parseInt(10);  // 10
parseInt(10.123);  // 10
  • 두 번째 인수로 진법을 나타내는 기수(2 ~ 36)를 전달할 수 있으며, 기수를 지정하면 첫 번째 인수로 전달된 문자열을 해당 기수의 숫자로 해석하여 10진수로 반환한다.

  • 기수를 생략하면 첫 번쩨 인수로 전달된 문자열을 10진수로 해석하여 반환한다.

// '10'을 10진수로 해석하고 그 결과를 10진수 정수로 반환한다.
parseInt('10');  // 10
// '10'을 2진수로 해석하고 그 결과를 10진수 정수로 반환한다.
parseInt('10', 2);  // 2
// '10'을 8진수로 해석하고 그 결과를 10진수 정수로 반환한다.
parseInt('10', 8);  // 8
  • 기수를 지정하여 10진수 숫자를 해당 기수의 문자열로 변환하고 싶을 때는 toString() 메서드를 사용한다.
// 문자열 '1001'을 2진수로 보고 2진수 문자열 '1001'을 10진수 정수로 변환한다.
parseInt('1001', 2);  // 9
// 10진수인 숫자 9를 2진수 문자열로 다시 변환한다.
parseInt('1001', 2).toString(2);  // '1001'

0개의 댓글