표준 빌트인 객체
표준 빌트인 객체는 ECMAScript 사양에 정의된 객체를 말하며, 애플리케이션 전역의 공통 기능을 제공한다.
호스트 객체
호스트 객체는 ECMAScript 사양에 정의되어 있지 않지만 자바스크립트 실행 환경(브라우저 또는 Node.js)에서 추가로 제공하는 객체를 말한다.
사용자 정의 객체
기본으로 제공되는 객체가 아닌 사용자가 직접 정의한 객체를 말한다.
Object, String, Number 등등 총 40여개의 표준 빌트인 객체를 제공한다.
const str = 'hello';
// 원시 타입인 문자열이 프로퍼티와 메서드를 갖고 있는 객체처럼 동작한다.
console.log(str.length); // 5
console.log(str.toUpperCase()); // HELLO
// 래퍼 객체로 프로퍼티에 접근하거나 메서드를 호출한 수, 다시 원시값으로 되돌린다.
문자열, 숫자, 불리언 값에 대해 객체처럼 접근하면 생성되는 임시 객체를 래퍼 객체라고 한다. 당연히 원시값은 이러한 속성을 갖지 못한다.
전역 객체는 코드가 실행되기 이전 단계에 자바스크립트 엔진에 의해 어떤 객체보다도 먼저 생성되는 특수한 객체이며, 어떤 객체에도 속하지 않은 최상위 객체이다.
// Infinity
console.log(3/0); // Infinity
console.log(-3/0); // -Infinity
// NaN
console.log(Number("123")); // NaN
console.log(1 * "Hi!"); // NaN
// undefined
var foo;
console.log(foo); // undefined
isFinite 함수는 전달받은 인수가 정상적인 유한수인지 검사하여 유한수이면 true를 반환하고 무한수이면 false를 반환한다.
// isFinite
isFinite(0); // true
isFinite(4 - 2); // true
isFinite(Infinity); // false
isFinite(NaN); // false
// NaN
isNaN(NaN) // true
isNaN(0) // false
isNaN('blabla'); // true
// parseFloat
parseFloat('3.14'); // 3.14
//parseInt
parseInt('3.14'); // 3
parseInt('1A0'); // 1
parseInt('f', 16); // 15
parseInt('40 years old') // 40
var x = 10
function foo() {
y = 20;
}
foo();
console.log(x + y); // 30
foo 함수 내의 y는 선언하지 않은 식별자다. 따라서 참조 에러가 발생할 것처럼 보이지만 y는 마치 선언된 전역 변수처럼 동작한다. 이러한 현상을 암묵적 전역이라 한다.