목록분류 전체보기 (126)
쑤쑤_CS 기록장
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bf71MB/btqRje7Lzvr/1yBIwCGmH9KUd34E956XgK/img.png)
#1. 실행 컨텍스트 실행 컨텍스트 (Execution Context) : scope, hoisting, this, function, closure 등의 동작원리를 담고 있는 자바스크립트의 핵심원리 실행 가능한 코드를 형상화하고 구분하는 추상적인 개념 실행 가능한 코드가 실행되기 위해 필요한 환경 실행 가능한 코드 전역 코드 : 전역 영역에 존재하는 코드 Eval 코드 : eval 함수로 실행되는 코드 함수 코드 : 함수 내에 존재하는 코드 실행에 필요한 여러가지 정보 변수 : 전역변수, 지역변수, 매개변수, 객체의 프로퍼티 함수 선언 변수의 유표범위(Scope) this 실행에 필요한 정보를 형상화하고 구분하기 위해 자바스크립트 엔젠은 실행 컨텐스트를 물리적 객체의 형태로 관리한다. var x = 'x..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/YFz5z/btqQZw9svGh/Agoo8tq0glIjvDysVkrdX1/img.png)
TABLE OF CONTENTS 함수 호출 방식과 this 바인딩 1. 함수 호출 2. 메소드 호출 3. 생성자 함수 호출 3.1 생성자 함수 동작 방식 3.2 객체 리터럴 방식과 생성자 함수 방식의 차이 3.3 생성자 함수에 new 연산자를 붙이지 않고 호출할 경우 4. apply/ call/ bind 호출 함수 호출 방식과 this 바인딩 함수 호추 방식에 의해 this에 바인딩할 어떤 객체가 동적으로 결정된다. 함수를 선언할 때 this에 바인딩할 객체가 정적으로 결정되는것이 아니고, 함수를 호출할 때 함수가 어떻게 호출되었는지에 따라 this에 바인딩할 객체가 동적으로 결정된다. 함수를 호출하는 방식 1. 함수 호출 2. 메소드 호출 3. 생성자 함수 호출 4. apply / call / bind..
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. 모든 변..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bJ5sty/btqQXAYnR8E/auI8vwJ25kkN5RfK8963U0/img.png)
#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..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cJhLZ3/btqQLlTlWAb/EPLHkAkXFaVRxsHSKskuDk/img.png)
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 콜백 함..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dWqimq/btqQKuXlCXs/FTf8EVA5glX7v6KdJVxhI0/img.png)
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) 형태로 전달하고 전달 받는다. 객체가 참조를 통해 공유되어 있다면 그 상태가 언제든지 변경될 수 있기 때문에 문제가 될 가능성이 크다. 의도하지 않은 객체의 변경이 발생하는 원인의 대다수는 “레퍼런스를 참조한 다른 객체에서 객체를 변경”하기 때문이다. 이 문제의 해결 방법은 비..