본문 바로가기

JavaScript/모던 자바스크립트 Deep Dive

(5)
실행 컨텍스트 # 소스코드의 타입 소스코드(실행 가능한 코드)를 4가지 타입으로 구분한다. 4가지 타입의 소스코드는 실행 컨텍스트를 생성한다. 소스코드의 타입 설명 전역 코드 전역에 존재하는 소스코드 함수 코드 함수 내부에 존재하는 소스코드 eval 코드 빌트인 전역함수인 eval함수에 인수로 전달되어 실행되는 소스코드 모듈 코드 모듈 내부에 존재하는 소스코드 ## 소스코드를 4가지 타입으로 구분하는 이유 → 소스코드의 타입에 따라 실행 컨텍스트를 생성하는 과정과 관리 내용이 다르다. 전역, 함수, eval, 모듈 코드가 각각 평가가 되면, 전역, 함수, eval, 모듈 실행 컨텍스트가 생성된다. # 소스코드의 평가와 실행 자바스크립트 엔진은 소스코드를 2개의 과정, '소스코드의 평가'와 '소스코드의 실행' 과정을 나..
실행 컨텍스트 스택 const x = 1; function foo() { const y = 2; function bar() { const z = 3; console.log(x + y + z); }; bar(); }; foo(); 위 예제는 소스코드의 타입으로 분류할 때, 전역코드와 함수 코드로 이루어져 있다. 자바스크립트 엔진은 먼저 1) 전역 코드를 평가하여 실행 컨텍스트를 생성한다. 그리고 2) 함수가 호출되면 3) 함수 코드를 평가하여 함수 실행 컨텍스트를 생성한다. 코드가 실행되는 시간의 흐름에 따라 실행 컨텍스트 스텍에는 다음과 같이 실행 컨텍스트가 추가되고, 제거된다. 1/ 전역코드의 평가와 실행 1) 전역 코드 평가 자바스크립트 엔진은 먼저 전역코드를 평가 → '전역 실행 컨텍스트' 생성 → 실행 컨텍스트 스택..
10장 - 2. 객체 리터럴 (프로퍼티 / 메서드) 10.3 프로퍼티 var person = { name: 'Lee', //프로퍼티 키:name, 프로퍼티 값: 'Lee', age: 20 //프로퍼티 키:age, 프로퍼티 값: 20 } - 프로퍼티를 나열할 때는 쉼표(,)로 구분 - 일반적으로 마지막 프로퍼티 뒤에는 쉼표를 사용하지 않지만, 사용해도 괜찮다. - 프로퍼티 키 : 빈 문자열을 포함하는 모든 문자열 또는 심벌 값 (**심벌 값 : ES6에 추가된 7번째 타입. 변경 불가능한 원시 타입의 값. 다른 값과 중복되지 않는 유일무이한 값. Symbol함수를 호출해 생성.) 1) 프로퍼티 값에 접근할 수 있는 이름으로서 '식별자 역할'을 한다. 하지만 반드시 식별자 네이밍 규칙을 따라야 하는것은 아니지만, 식별자 네이밍규칙을 준수하는 프로퍼티 키와 그..
10장 - 1. 객체 리터럴 (객체 / 객체 리터럴) 10.1 객체란? - 객체 : 0개 이상의 프로퍼티로 구성된 집합. 키(key)와 값(value)으로 구성된다. - 프로퍼티 값 : 자바스크립트에서 사용할 수 있는 모든 값 가능. 심지어 자바스크립트의 함수도 일급 객체이므로 프로퍼티 값으로 가능. 프로퍼티 값이 함수일 경우, 일반함수와의 구분을 위해 메서드(method)라고 부른다. 즉, 객체는 프로퍼티와 메서드로 구성된 집합체. * 프로퍼티 : 객체의 '상태'를 나타내는 값(data) * 메서드 : 프로퍼티(상태데이터)를 참조하고 조작할 수 있는 '동작'(behavior) 10.2 객체 리터럴에 의한 객체 생성 * 클래스 기반 객체지향 언어(ex: C++, Java) : 클래스를 사전 정의하고, 필요한 시점에 new 연산자와 함께 생성자(constru..
1장. 프로그래밍 1.1 프로그래밍이란? 사람(자연어 사용) ————-> 컴퓨터(기계어 사용: 0과 1) : 컴퓨터에게 정확하고 상세하게 ‘요구사항’을 설명(코드를 통해)하고, 실행을 요구하는 일종의 사람과 컴퓨터간의 커뮤니케이션 실행을 요구하기 위해서는, 먼저 ‘무엇’을 실행시키고 싶은지 알아야 한다. 1. 해결해야 할 문제(요구사항)을 명확히 이해 - 대부분의 요구사항 : 복잡하고 불명확하다. 1> 문제를 명확하게 이해 2> 복잡함을 단순하게 분해 & 자료 정리 및 구분 3> 순서에 맞게 행위 배열 2. 적절한 문제 해결 방안 정의 - 이 때 필요한 것 : 컴퓨팅 사고. 1.2 프로그래밍 언어 문제 해결 능력을 바탕으로 정의된 문제해결방안 : '컴퓨터'에게 전달되어야 한다. 명령을 수행할 주체 : ‘컴퓨터’ 즉, 사람..