목록IT 지식 기록 (106)
쑤쑤_CS 기록장
1. strict mode란? 전역 스코프에도 변수 x의 선언이 존재하지 않기 때문에 ReferenceError를 throw할 것 같지만 자바스크립트 엔진은 암묵적으로 전역 객체에 프로퍼티 x를 동적 생성한다. 결국 식별자 x는 전역 변수가 된다. 이렇게 전역 변수가 된 변수를 암묵적 전역 변수(implicit global)라 한다. 개발자의 의도와는 상관없이 자바스크립트 엔진이 생성한 암묵적 전역 변수는 오류를 발생시키는 원인이 될 가능성이 크다. 따라서 반드시 var, let, const 키워드를 사용하여 변수를 선언한 다음 변수를 사용해야 한다. strict mode 자바스크립트 언어의 문법을 보다 엄격히 적용 기존에는 무시되던 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제..
#1. 스코프란? 스코프 : Scope. 유효범위 참조 대상 식별자(identifier, 변수, 함수의 이름과 같이 어떤 대상을 다른 대상과 구분하여 식별할 수 있는 유일한 이름)를 찾아내기 위한 규칙이다. 자바스크립트는 이 규칙대로 식별자를 찾는다. 스코프가 없다면 같은 식별자 이름은 충돌을 일으키므로 프로그램 전체에서 하나밖에 사용할 수 없다. #2. 스코프의 구분 1. 자바스크립트에서 스코프를 구분해보면 다음과 같이 2가지로 나눌 수 있다. - 전역 스코프 (Global scope) : 코드 어디에서든지 참조할 수 있다. - 지역 스코프 (Local scope or Function-level scope) : 함수 코드 블록이 만든 스코프로 함수 자신과 하위 함수에서만 참조할 수 있다. 2. 모든 변..

#1. 프로토타입 객체 자바스크립트는 프로토타입 기반 객체지향 프로그래밍 언어이다. 클래스 기반 객체지향 프로그래밍 언어는 객체 생성 이전에 클래스를 정의하고 이를 통해 객체(인스턴스)를 생성한다. 하지만 프로토타입 기반 객체지향 프로그래밍 언어는 클래스 없이(Class-less)도 객체를 생성할 수 있다. 자바스크립트의 모든 객체는 자신의 부모 역할을 담당하는 객체와 연결되어 있다. 그리고 이것은 마치 객체 지향의 상속 개념과 같이 부모 객체의 프로퍼티 또는 메소드를 상속받아 사용할 수 있게 한다. 이러한 부모 객체를 Prototype(프로토타입) 객체 또는 줄여서 Prototype(프로토타입)이라 한다. Prototype 객체는 생성자 함수에 의해 생성된 각각의 객체에 공유 프로퍼티를 제공하기 위해 ..
TABLE OF CONTENTS 1. typeof 2. Object.prototype.toString 3. instanceof 4. 유사 배열 객체 자바스크립트는 동적 타입(dynamic typed) 언어이므로 변수에 어떤 값이 할당될 지 예측하기 어렵다. 코드만 보면 개발자의 의도와 다르게 어떤 타입의 인수를 전달해야 하는지, 어떤 타입의 값을 반환해야 하는지 명확하지 않다. 따라서 다르게 호출될 수 있으며 이는 자바스크립트 문법 상 어떠한 문제도 없다. 이러한 상황이 발생한 이유는 변수나 반환값의 타입을 사전에 지정하지 않는 자바스크립트의 동적 타이핑(Dynamic Typing)에 의한 것이다. 이와 같은 이유로 자바스크립트는 타입 체크가 필요하다. #1. typeof 타입 연산자(Type Opera..

TABLE OF CONTENTS 1. 함수 정의 1.1 함수 선언문 1.2 함수 표현식 1.3 Function 생성자 함수 2. 함수 호이스팅 3. First-class object (일급 객체) 4. 매개변수(Parameter, 인자) 4.1 매개변수(parameter, 인자) vs 인수(argument) 4.2 Call-by-value 4.3 Call-by-reference 5. 반환값 6. 함수 객체의 프로퍼티 6.1 arguments 프로퍼티 6.2 caller 프로퍼티 6.3 length 프로퍼티 6.4 name 프로퍼티 6.5 __proto__ 접근자 프로퍼티 6.6 prototype 프로퍼티 7. 함수의 다양한 형태 7.1. 즉시 실행 함수 7.2 내부 함수 7.3 재귀 함수 7.4 콜백 함..

TABLE OF CONTENTS 1. immutable vs. mutable value 2. 불변 데이터 패턴 (immutable data pattern) 2.1 Object.assign 2.2 Object.freeze 2.3 Immutable.js Immutability(변경불가성) : 객체가 생성된 이후 그 상태를 변경할 수 없는 디자인 패턴을 의미한다. 이는 함수형 프로그래밍의 핵심 원리이다. 객체는 참조(reference) 형태로 전달하고 전달 받는다. 객체가 참조를 통해 공유되어 있다면 그 상태가 언제든지 변경될 수 있기 때문에 문제가 될 가능성이 크다. 의도하지 않은 객체의 변경이 발생하는 원인의 대다수는 “레퍼런스를 참조한 다른 객체에서 객체를 변경”하기 때문이다. 이 문제의 해결 방법은 비..

TABLE OF CONTENTS 1. 객체(Object)란? 1.1 프로퍼티 1.2 메소드 2. 객체 생성 방법 2.1 객체 리터럴 2.2 Object 생성자 함수 2.3 생성자 함수 3. 객체 프로퍼티 접근 3.1 프로퍼티 키 3.2 프로퍼티 값 읽기 3.3 프로퍼티 값 갱신 3.4 프로퍼티 동적 생성 3.5 프로퍼티 삭제 3.6 for-in 문 4. Pass-by-reference 5. Pass-by-value 6. 객체의 분류 #1. 객체(Object)란? 자바스크립트는 객체(object) 기반의 스크립트 언어이며 자바스크립트를 이루고 있는 거의 “모든 것”이 객체이다. 원시 타입(Primitives)을 제외한 나머지 값들(함수, 배열, 정규표현식 등)은 모두 객체이다. 자바스크립트의 객체는 키(k..

TABLE OF CONTENTS 1. 타입 변환이란? 2. 암묵적 타입 변환 2.1 문자열 타입으로 변환 2.2 숫자 타입으로 변환 2.3 불리언 타입으로 변환 3. 명시적 타입 변환 3.1 문자열 타입으로 변환 3.2 숫자 타입으로 변환 3.3 불리언 타입으로 변환 4. 단축 평가 #1. 타입 변환이란? 자바스크립트의 모든 값은 타입이 있다. 값의 타입은 다른 타입으로 개발자에 의해 의도적으로 변환할 수 있다. 또는 자바스크립트 엔진에 의해 암묵적으로 자동 변환될 수 있다. var x = 10; // 명시적 타입 변환 var str = x.toString(); // 숫자를 문자열로 타입 캐스팅한다. console.log(typeof str); // string 개발자에 의해 의도적으로 값의 타입을 변환..