[Javascript] strict mode / 빌트인 객체

개발새발🦶·2022년 12월 1일
1
post-thumbnail
post-custom-banner

🤔 strict mode

자바스크립트는 오류를 줄여 안정적인 코드를 생산하기 위해 ES5부터 strict mode(엄격 모드)가 추가되었다. strict mode는 자바스크립트 문법을 좀 더 엄격하게 적용하여 오류나 엔진의 최적화 작업에 문제가 있는 코드에 대해 명시적으로 에러를 발생한다.


대표적으로 ESLint 와 유사하다고 보면 된다.
ESLint란 오류가 발생한 코드를 빠른 수정이나 알림창으로 알려주는
비주얼 스튜디오 코드의 확장 프로그램이다.



strict mode의 적용

strict mode를 적용하려면 전역의 선두 또는 함수 몸체에 usestrict를 추가한다.

// 에러 미 발생
function foo(){
  x = 10;
  'use strict';
}

👀 적용시 체크

  • 전역에 strict mode를 적용하는 것은 피한다.
  • 즉시 실행 함수로 감싼 스크립트 단위로 적용한다.


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=안녕
profile
발로하는 코딩 정리기
post-custom-banner

0개의 댓글