자바스크립트는 오류를 줄여 안정적인 코드를 생산하기 위해 ES5부터 strict mode
(엄격 모드)가 추가되었다. strict mode
는 자바스크립트 문법을 좀 더 엄격하게 적용하여 오류나 엔진의 최적화 작업에 문제가 있는 코드에 대해 명시적으로 에러를 발생한다.
대표적으로 ESLint
와 유사하다고 보면 된다.
ESLint
란 오류가 발생한 코드를 빠른 수정이나 알림창으로 알려주는
비주얼 스튜디오 코드의 확장 프로그램이다.
strict mode
를 적용하려면 전역의 선두 또는 함수 몸체에 usestrict
를 추가한다.
// 에러 미 발생
function foo(){
x = 10;
'use strict';
}
strict mode
를 적용하는 것은 피한다.1. 암묵적 전역
선언하지 않은 변수를 참조하면 에러 발생시킴
2. 변수, 함수, 매개변수의 삭제
delete연산자로 변수, 함수, 매개변수 삭제하면 에러 발생시킴
3. 매개변수 이름의 중복
중복된 매개변수 이름도 에러 발생시킴
4. 일반함수의 this
strict mode
에서 함수를 일반함수로서 this를 호출하면 undifined
가 발생한다.
생성자 함수가 아닌 일반함수에서는 this를 사용할 필요가 없기 때문.
에러는 미발생
자바스크립트는 크게 4가지 객체로 분류할 수 있다.
흔히 Object, String, Number, Blooean, Date, Math, Array 등등등등등...
의 40여가지 빌트인 객체를 제공 함. Math, Reflect, Json을 제외한 빌트인 객체는
인스턴스
를 생성할 수 있는 생성자 함수 객체
이다.
자바스크립트 실행 환경(브라우저 환경, Node.js 환경)에서 추가로 제공하는 객체를 말한다.
빌트인 객체와 호스트 객체처럼 기본제공이 아닌, 사용자가 직접 정의한 객체를 말한다.
전역 객체는 코드가 실행되기 이전 단계에 자바스크립트 엔진에 의해 가장 먼저 생성되는 최상위의 특수한 객체이다.
전역 객체는 자바스크립트 환경에 따라 지칭하는 이름이 다르다.
브라우저 환경
에서는 window
이며, Node.js
환경에서는 global
이다.
전역 객체는 몇가지 프로퍼티와 메소드를 갖고 있다.
이는 전역 변수나 전역 함수처럼 사용 가능하다.
전역 객체의 프로퍼티이며, 주로 애플리케이션 전역에서 사용하는 값을 제공한다.
Infinity
// 전역 프로퍼티는 window 생략 가능
console.log(window.Infinity === Infinity); // true
NaN
// NaN은 Number이다.
console.log(window.NaN); // NaN
undefined
console.log(window.undefined); // undefined
전역 객체의 프로퍼티이며, 주로 애플리케이션 전역에서 사용하는 값을 제공한다.
isFinite
// 인수가 유한수이면 true, 무한수이면 false 반환
isFinite(0); // true
isFinite(NaN); // false
isNaN
// 인수가 NaN인지 검사하여 결과를 불리언으로 반환한다.
isNaN(NaN); // true
isNaN(10); // false
parseFloat
// 문자열 인수를 실수로 반환한다.
parseFloat('3.14'); // 3.14
parseFloat('10.00'); // 10
parseFloat('34 45 50'); // 34
parseFloat('40 years'); // 40
parseFloat('he was 40'); // NaN
parseFloat(' 40 '); // 40
parseInt
// 문자열을 정수로 반환한다.
parseFloat('3.14'); // 3
parseFloat('10.222'); // 10
parseFloat(10); // 10
parseFloat(10.122); // 10
// 10을 10진수로 해석하여 10진수 정수로 반환
parseFloat('10', 2); // 2
encodeURI / decodeURI
uri로 전달받은 문자열을 이스케이프 처리하는 함수
const uri = 'https://velog.io/write?id=안녕'
encodeURI(uri) // https://velog.io/write?id=이스케이프 블라블라
// 다시 돌려줌
const uri = 'https://velog.io/write?id=안녕'
decodeURI(uri) // https://velog.io/write?id=안녕