전역 객체 - 모든 객체의 유일한 최상위 객체
Browser-side에서는 window, Server-side(Node.js)에서는 global 객체를 의미
실행 컨텍스트 - 실행 컨텍스트는 실행할 코드에 제공할 환경 정보들을 모아놓은 객체
자바스크립트는 동일한 환경에 있는 환경 정보들을 모은 실행 컨텍스트를 콜스택에 쌓아올린 후 실행하여 코드의 환경과 순서를 보장(스택이기 때문에 FILO로 순서보장)
전역 프로퍼티 - 전역 객체의 프로퍼티
애플리케이션 전역에서 사용하는 값들을 나타내기 위해 사용
간단한 값이 대부분이며 다른 프로퍼티나 메소드를 가지고 있지 않음
1. Infinity - 양/음의 무한대를 나타내는 숫자값
console.log(3/0); // Infinity
console.log(typeof Infinity); // number
console.log(Number('xyz')); // NaN
console.log(1 * 'string'); // NaN
console.log(typeof NaN); // number
var foo;
console.log(foo); // undefined
전역 함수 - 애플리케이션 전역에서 호출할 수 있는 함수로서 전역 객체의 메소드
1. eval() - 매개변수에 전달된 문자열 구문 또는 표현식을 평가 또는 실행
보안에 매우 취약하므로 가급적으로 금지
var x = 5;
var y = 4;
console.log(eval('x * y')); // 20
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(2e64)); // true
console.log(isFinite('10')); // true: '10' → 10
console.log(isFinite(null)); // true: null → 0
isNaN(NaN) // true
isNaN(undefined) // true: undefined → NaN
isNaN({}) // true: {} → NaN
isNaN('blabla') // true: 'blabla' → NaN
isNaN(null) // false: null → 0
// strings
isNaN('37.37') // false: '37.37' → 37.37
isNaN(' ') // false: ' ' → 0
// dates
isNaN(new Date()) // false: new Date() → Number
isNaN(new Date().toString()) // true: String → NaN
parseFloat('10.00'); // 10
parseFloat('34 45 66'); // 34
parseFloat(' 60 '); // 60
parseFloat('40 years'); // 40
parseFloat('He was 40') // NaN
parseInt(10.123); // 10 - 첫번째 매개변수에 전달된 값이 문자열이 아니면 문자열로 변환한 후 숫자로 해석하여 반환
두번째 매개변수에 진법을 나타내는 기수를 지정하지 않더라도 첫번째 매개변수에 전달된 문자열이 “0x” 또는 “0X”로 시작한다면 16진수로 해석하여 반환
두번째 매개변수에 진법을 나타내는 기수를 지정하지 않더라도 첫번째 매개변수에 전달된 문자열이 “0”로 시작한다면 8진수로 해석하지 않고 10진수로 해석➡️문자열을 8진수로 해석하려면 지수를 반드시 지정
첫번째 매개변수에 전달된 문자열의 첫번째 문자가 해당 지수의 숫자로 변환될 수 없다면 NaN을 반환
parseInt('A0')); // NaN
parseInt('20', 2); // NaN
첫번째 매개변수에 전달된 문자열의 두번째 문자부터 해당 진수를 나타내는 숫자가 아닌 문자(예를 들어 2진수의 경우, 2)와 마주치면 이 문자와 계속되는 문자들은 전부 무시되며 해석된 정수값만을 반환
parseInt('1A0')); // 1
parseInt('58', 8); // 5
첫번째 매개변수에 전달된 문자열에 공백이 있다면 첫번째 문자열만 해석하여 반환하며 전후 공백은 무시
첫번째 문자열을 숫자로 파싱할 수 없는 경우, NaN을 반환
parseInt('34 45 66'); // 34
parseInt('He was 40') // NaN