변수는 프로그래밍 언어에서 데이터를 관리하기 위한 핵심 개념이다.사람이 위 식을 계산하려면 10,20,+기호의 의미를 알고 있어야 하며, 10 + 20이라는 식의 의미도 해석할 수 있어야 한다.사람이 10 + 20 이라는 식의 의미를 해석하면 + 기호의 의미대로 덧셈을
막살 설명하면 난감한 단어다.개념을 이해했다는 것은 바로 용어를 정확히 이해하고 설명할 수 있다는 것이다.만약 용어의 의미를 정확히 설명할 수 없다면, 개념을 제대로 이해하지 못한 경우가 많다.값은 프로그래밍 전반에서 매우 자주 쓰이므로 주의 깊게 살펴보자.값은 식이
피연산자가 값이라는 명사의 역할을 한다면 연산자는 피연산자를 연산하여 새로운 값을 만든다 라는 동사의 역할을 한다고 볼 수 있다.피연산자는 연산의 대상이 되어야하므로 값으로 평가할 수 있어야한다.연산자는 값으로 평가된 피연산자를 연산해 새로운 값을 만든다.증가++ 감소
제어문은 조건에 따라 코드 블록을 실행하거나 반복 실행할 때 사용된다.일반적인 코드는 위에서 아래 방향으로 순차실행되지만 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어하기에 가독성을 해칠 수 있다.블록문은 0개 이상의 문을 중괄호로 묶은것으로 코드 블록 또는 블
자바스크립트의 모든 값은 타입이 있다.개발자가 의도적으로 타입을 변환하는 것을 명시적 타입 변환, 타입 캐스팅이라 한다. 반대로 의도하지 않은 타입 변환은 암묵적 타입 변환, 타입 강제 변환이라 한다.ES6에 도입된 템플릿 리터럴의 표현식 삽입은 표현식의 평과 결과를
자바스크립트는 객체 기반의 프로그래밍 언어이다. 원시 값은 변경 불가능한 값이지만 객체는 변경 가능한 값이다.객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티킄 키와 값으로 구성된다.자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다.함수는 일
원시 타입의 값은 변경 불가능한 값이다.객체는 변경 가능한 값이다.원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장된다.이에 비해, 객체를 변수에 할당하면 변수에는 참조 값이 저장된다객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이
함수는 자바스크립트에서 가장 중요한 핵심 개념이다.스코프, 실행 컨텍스트 클로저, 생성자 함수에 의한 객체 생성, 메서드 , this 프로포타입, 모듈화 등이 모두 함수와 깊은 관련이 있다.프로그래밍 언어의 함수는 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하
함수의 매개변수는 코드를 이해하는 데 방해되는 요소이므로 이상적인 매개변수 개수는 0개이며 적을수록 좋다.매개변수의 개수가 많다는 것은 함수가 여러 가지 일을 한다는 증거이므로 바람직하지 않다.이상적인 함수는 한가지 일만 해야 하며 가급적 작게 만들어야 한다객체를 인수
스코프(유효범위)의 이해가 부족하면 다른 개념을 이해하기 어렵다.자바스크립트는 다른 언어의 스코프와 구별되는 특징이 있다.또한 var 키워드로 선언한 변수와 let, const로 선언한 변수의 스코프도 다르게 동작한다.스코프는 변수 그리고 함수와 깊은 관련이 있다.매개
변수의 생명 주기지역 변수는 함수가 호출되면 생성되고 함수가 종료하면 소멸된다.지역 변수는 함수가 호출되기 이전까지는 생성되지 않는다.함수를 호출하지 않으면 함수 내부의 변수 선언문이 실행되지 않기 때문이다.지역 변수의 생명 주기는 함수의 생명 주기와 일치한다.하지만
프로퍼티 어트리뷰트를 이해하기 위해서는 먼저 내부 슬롯과 내부 메서드의 개념에 대해 숙지해야 한다.내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티와 의사 매서드다.의사(pseudo) : 가
객체 리터럴에 의해 객체를 생성하는 경우, 프로퍼티 구조가 동일함에도 불구하고 매번 같은 프로퍼티와 메서드를 기술해야 한다.앞의 예제처럼 객체가 한두 개라면 넘어갈 수도 있겠지만 수십개라면 문제가 크다.클래스가 인스턴스를 생성하는 것처럼 동일 프로퍼티를 갖는 구조의 객
생성자 함수에 의해 생성된 인스턴스는 프로토타입의 constructor 프로퍼티에 의해 생성자 함수와 연결된다.constructor 프로퍼티가 가리키는 생성자 함수는 인스턴스를 생성한 생성자 함수다.하지만 리터럴 표기법에 의한 객체 생성 방식처럼 명시적으로 new 연산
객체지향 프로그래밍에서 살펴보았듯이 객체는 상태를 나타내는 프로퍼티와 동작을 나타내는 메서드를 하나의 논리적인 단위로 묶은 복합적인 자료구조다.동작을 나타내는 메서드는 자신이 속한 객체의 상태, 즉 프로퍼티를 참조하고 변경할 수 있어야 하고, 자신이 속한 객체의 프로퍼
작성중
클로저는 실행 컨텍스트에 대한 사전 지식이 있으면 이해하기 어려운 개념은 아니다.클로저는 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 중요한 특성이다.일급 객체일급 객체(first-class object)란 다른 객체들에 일반적으로 적용 가능한 연산
자바스크립트는 프로토타입을 기반으로 한 강력한 객체지향 프로그래밍 능력을 지니고 있다.프로토타입 기반 객체지향 언어는 클래스가 필요 없는 객체지향 프로그래밍 언어지만, 이는 자바스크립트를 어렵게 느끼게 만드는 하나의 장벽처럼 인식되었다.그렇다고 ES6에서 클래스를 지원
인스턴스 프로퍼티는 construtor 내부에서 정의해야 한다.constructor 내부 코드가 실행되기 이전에 constructor 내부의 this에는 이미 클래스가 암묵적으로 생성한 인스턴스인 빈 객체가 바인딩되어 있다.생성자 함수에서 생성자 함수가 생성할 인스턴스
ES6 이전까지의 함수는 생성자 함수로서도 호출할 수 있었다.즉 ES6 이전의 모든 함수는 callable 이면서 constructor다.함수에 전달되어 보조 함수의 역할을 수행하는 콜백 함수도 마찬가지로 불필요한 constructor로 프로토타입 객체를 생성해왔다.성