본문 바로가기

javascript

(8)
[Javascript] 객체 지향 프로그래밍 개념, 함수형 프로그래밍과의 차이점 *** 아래의 내용은 (이웅모 저)책을 공부하며 정리한 내용입니다. *** 객체지향프로그래밍이란? 객체 지향 프로그래밍은 프로그램을 명령어 또는 함수의 목록으로 보는 전통적인 명령형 프로그래밍(imperative programming)의 절차 지향적인 관점에서 벗어나 여러 개의 독립적 단위, 즉 객체의 집합으로 프로그램을 구현하는 프로그래밍 패러다임을 말한다. 예를 들어 사람은 이름, 주소, 성별, 나이, 등 다양한 속성을 갖는다. 이 때 이름은 홍길동이고 성별은 남자이고 나이는 20세인 사람과 같이 속성을 구체적으로 표현하면 다른 사람과 구별할 수 있는데 이와 같은 실체와 속성 개념을 프로그래밍 개념에 적용했다고 볼 수 있다. 프로그래밍에 접목해보면, 사람에게는 다양한 속성이 있으나 우리가 구현하려는 ..
[Javascript] 실행 컨텍스트(Execution Context) *** 아래 내용은 (이웅모 저) 책을 공부하며 정리한 내용입니다.*** execution context 실행 컨텍스트(execution context)란? 자바스크립트 엔진이 코드를 평가하고 실행할 때 실행 컨택스트가 역할을 수행하게 된다. 코드가 실행되려면 다음과 같이 스코프, 식별자, 코드 실행 순서 등의 관리가 있어야 한다. 첫번째, 선언에 의해 생성된 모든 식별자(변수, 함수, 클래스 등)를 스코프를 구분하여 등록하고 상태 변화(식별자에 바인딩된 값의 변화)를 지속적으로 관리할 수 있어야 한다. 둘째, 스코프는 중첩 관계에 의해 스코프 체인을 형성해야 한다. 즉, 스코프 체인을 통해 상위 스코프로 이동하여 식별자를 검색할 수 있어야 한다. 셋째, 현재 실행 중인 코드의 실행 순서를 변경(예를 들..
[Javascript] Scope, Hoisting *** 아래 내용은 (이웅모 저) 책을 공부하며 정리한 내용입니다.*** Scope 함수의 매개변수는 함수 몸체 내부에서만 참조할 수 있고 함수 몸체 외부에서는 참조할 수 없다. 이것은 매개변수를 참조할 수 있는 유효범위, 즉 매개 변수의 스코프가 함수 몸체 내부로 한정되기 때문이다. function add(x, y) { // 매개변수는 함수 몸체 내부에서만 참조할 수 있다. // 즉, 매개변수의 스코프(유효범위)는 함수 몸체 내부다. console.log(x, y); // 2 5 return x + y; } add(2, 5); // 매개변수는 함수 몸체 내부에서만 참조할 수 있다. console.log(x, y); // ReferenceError: x is not defined 변수는 코드의 바깥 영역..
[JAVASCRIPT] 변수 데이터 불변성 & 함수의 매개 변수 *** 아래의 글은 (이웅모 저) 책을 대부분 참고하였습니다.*** 변수 데이터 불변성 원시 타입과 불변성 원시 타입 은 정수, 실수, 문자, 논리 리터럴등의 실제 데이터 값을 저장하는 타입이다. 자바스크립트가 제공하는 7가지 데이터 타입(숫자, 문자열, 불리언, null, undefined, 심벌, 객체 타입)은 크게 원시 타입(primitive type)과 객체타입(object/reference type)으로 구분할 수 있다. 원시타입과 객체타입은 크게 세 가지 측면에서 다르다. 첫째, 원시 타입의 값, 즉 원시 값는 변경 불가능한 값(immutable value)이다. 이에 비해 객체(참조)타입의 값, 즉 객체는 변경 가능한 값(mutable value)이다. 둘째, 원시 값은 변수에 할당하면 변수..
[javascript] object & property descriptor, prototype *** 아래의 내용은 (이웅모 저)책을 공부하며 정리한 내용입니다. *** object & property descriptor 객체란? 속성을 통해 여러 개의 값을 하나의 단위로 구성한 복합적인 자료구조를 객체라고 한다. 객체는 상태 데이터와 동작을 하나의 논리적인 단위로 묶은 복합적인 자료구조라고 할 수 있다. 객체의 상태 데이터를 프로퍼티, 동작을 메서드라고 부른다. 원시 타입의 값, 즉 원시 값은 변경 불가능한 값이지만 객체 타입의 값, 즉 객체는 변경가능한 값이다. 객체는 프로퍼티와 메서드로 구성된 집합체이다. 프로퍼티는 객체의 상태를 나타내는 값이고 메서드는 프로퍼티(상태 데이터)를 참조하고 조작할 수 있는 동작이다. 객체 리터럴에 의한 객체 생성 자바스크립트는 프로토타입 기반 객체 지향 언어로..
[javascript] scope, closure, execution context *** 아래의 내용은 (이웅모 저)책을 공부하며 정리한 내용입니다. *** scope 모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다. 이를 스코프라고 한다. 스코프는 식별자가 유효한 범위를 말한다. 자바스크립트 엔진은 스코프를 통해 스코프는 자바스크립트 엔진이 식별자를 검색할 때 사용하는 규칙이라고 할 수 있다. function add(x, y) { // 매개변수는 함수 몸체 내부에서만 참조할 수 있다. // 즉, 매개변수의 스코프(유효범위)는 함수 몸체 내부다. console.log(x, y); // 2 5 return x + y; } add(2, 5); // 매개변수는 함수 몸체 내부에서만 참조할 수..
[javascript] this, arguments, function, arrow function, callback *** 아래의 내용은 (이웅모 저)책을 공부하며 정리한 내용입니다. *** this this는 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기참조변수이다. this를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조 할 수 있다. 함수를 호출하면 arguments 객체와 this가 암묵적으로 함수 내부에 전달된다. 함수 내부에서 arguments 객체를 지역변수처럼 사용할 수 있는 것처럼 this도 지역변수처럼 사용할 수 있다. 단, this가 가리키는 값, 즉 this 바인딩(식별자와 값을 연결하는 과정을 의미한다. 예를 들어 변수 선언은 변수 이름(식별자)와 확보된 메모리 공간의 주소를 바인딩한다.)은 함수 호출 방식에 의해 동적으로 결정된다. // 객체 리..
[javascript] call by value, call by reference, call by sharing / 원시타입과 참조타입 / type of 와 instance of call by value vs call by reference vs call by sharing call by value vs call by reference 함수의 매개변수를 값으로 전달하는 방식이 Call by Value이고 함수의 매개변수를 참조로 전달하는 방식이 Call by Reference 이다. const flight = 'LH234'; const jane = { name: 'Jane Austin', passport: 2933621416 }; const checkIn = function (flightNum, passenger) { flightNum = 'LH999'; passenger.name = 'Ms. ' + passenger.name; if (passenger.passport === 2..