console.log
foresight
« 2025/10 »
일 |
월 |
화 |
수 |
목 |
금 |
토 |
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
|
관리 메뉴
console.log
[모던 자바스크립트 Deep Dive] 20 - 21 장 본문
개발공부/JavaScript
[모던 자바스크립트 Deep Dive] 20 - 21 장
foresight
2023. 8. 26. 19:55
20. strict mode
strict mode
- 잠재적인 오류를 발생시키기 어려운 개발 환경을 만들기 위해 ES5부터 추가된 엄격 모드
- 즉시 실행 함수로 감싼 스크립트 단위로
'use strict';
적용
- 전역에 적용하면 외부 서드파티 라이브러리를 사용하는 경우 오류를 발생시킬 수 있음
- 함수 단위로 적용하면 모든 함수에 일일이 적용해야 하므로 번거로움
- strict mode 로 걸러낼 수 있는 에러
- 암묵적 전역 - 선언하지 않은 변수를 참조하면 ReferenceError 발생
- 변수, 함수, 매개변수의 삭제 - delete연산자로 변수, 함수, 매개변수를 삭제하면 SyntaxError 발생
- 매개변수 이름의 중복 - 중복된 매개변수 이름 사용으로 SyntaxError 발생
- with 문의 사용 - with 문을 사용하면 SyntaxError 발생
- strict mode 적용에 의한 변화
- 일반 함수의 this
- strict mode에서 일반 함수로서 호출하면 this에 undefined 바인딩 됨
- arguments 객체
- strict mode에서 매개변수에 전달된 인수를 재할당해도 arguments 객체에 반영되지 않음
21. 빌트인 객체
자바스크립트 객체의 분류
- 표준 빌트인 객체
- String, Object, Number, Boolean 등등 40여 개의 표준 빌트인 객체 제공
- 이들은 모두 인스턴스를 생성할 수 있는 생성자 함수 객체
- 프로토타입 메서드와 정적 메서드 제공
- Math, Reflect, JSON 은 이와 달리 정적 메서드만 제공
- 호스트 객체
- 사용자 정의 객체
원시값과 래퍼 객체
- 원시값은 객체가 아니므로 프로퍼티나 메서드를 가질 수 없는데도 마치 객체처럼 동작함
- 원시값에 객체처럼 접근하면 생성되는 임시 객체를 래퍼 객체라고 한다.
- 문자열, 숫자 값에 마침표 표기법으로 접근하면 String.prototype, Number.prototype의 메서드를 상속 받아 사용 가능
- 문자열, 숫자, 불리언, 심벌 이외의 원시값을 객체처럼 사용하면 에러 발생