**10+20 이라는 계산을 컴퓨터가 수행한다 생각해보자. 컴퓨터는 10과 20이라는 피연산자를 기억을 하고 있어야 한다. 컴퓨터는 CPU를 사용해 연산하고 메모리를 사용해 데이터를 기억한다. 따라서 10과 20도 메모리에 저장이 되어있어야 사용을 할 수 있다. **
값은 식이 평가되어 생성된 결과를 말한다. 모든 값은 데이터 타입을 가지며 메모리에 2진수, 즉 비트의 나열로 저장이된다.사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법을 말한다. 3 // 숫자 리터럴 이라고 한다. 값으로 평가 될 수 있는
객체는 상태를 나타내는 프로퍼티와 동작을 나타내는 메서드를 하나의 논리적인 단위로묶은 복합적인 자료구조다. 동작을 나타내는 메서드는 자신이 속한 객체의 상태, 즉 프로퍼티를 참조하고 변경할 수 있어야 한다. 이때 메서드가 자신이 속한 객체의 프로퍼티를 참조하려면 먼저
실행 컨텍스트는 자바스크립트의 동작 원리를 담고 있는 핵심 개념이다. 실행컨텍스트를 바르게 이해하면 자바스크립트가 스코프를 기반으로 식별자와 식별자에 바인딩된 값을 관리하는 방식과 호이스팅이 발생하는 이유, 클로저의 동작 방식, 그리고 태스크 큐와 함께 동작하는 이벤
앞의 글에서 실행 컨텍스트는 렉시컬 환경으로 관리하고 코드 실행 순서는 실행 컨텍스트 스택으로 관리한다고 얘기하였다. 각각을 이해해보자 위의 예제는 전역코드와 함수코드로 이루어져 있다. 각각 실행 컨텍스트가 생성이 되는데 실행 컨텍스트는 스택자료구조로 관리된다. 이를
클로저는 자바스크립트 고유의 개념이 아니다. 함수를 일급 객체로 취급하는 함수형 플그래밍 언어에서 사용되는 중요한 특성이다. > MDN에서 클로저의 정의: 클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. 키워드는 함수가 선언된 렉시컬 환경이다. 렉시컬
자바스크립트의 스코프는 다른 언어의 스코프와 구별되는 특징이 있으므로 주의가 필요하다. 그리고 var 키워드로 선언한 변수와 let 또는 const 키워드로 선언한 변수의 스코프도 다르게 동작한다. 스코프는 변수 그리고 함수와 깊은 관련이 있다.모든 식별자는 자신이
변수는 선언에 의해 생성되고 할당을 통해 값을 갖는다. 그리고 언젠가 소멸한다.전역변수의 생명주기는 애플리케이션의 생명주기와 같다. 함수내부에서 선언된 지역변수는 함수가 호출되면 생성되고 함수가 종료하면 소멸한다. 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간
var 변수는 중복 선언을 허용 한다. var 키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정한다.변수 호이스팅var 키워드로 변수를 선언하면 변수 호이스팅에 의해 변수 선언문이 스코프의 선두로 끌어올려진 것처럼 동작한다. 즉 변수 호이스팅에 의
자바스크립트는 객체 기반의 프로그래밍 언어이며 자바스크립트를 이루고 있는 거의 " 모든 것" 이 객체다. 객체는 상태 데이터와 동작을 하나의 논리적인 단위로 묶은 복합적인 자료구조라고 할 수 있다. 이때 객체의 상태 데이터를 프로퍼티, 동작을 메서드라 부른다. 상속 :
함수 객체만이 소유하는 prototype 프로퍼티는 생성자 함수가 생성할 인스턴스의 프로토타입을 가리킨다. 따라서 생성자 함수로서 호출할 수 없는 함수, 즉 non-constructor인 화살표 함수와 ES6 메서드 축약 표현으로 정의한 메서드는 prototype 프로
자바스크립트는 비동기 처리를 위한 하나의 패턴으로 콜백함수를 사용한다.하지만 전통적인 콜백 패턴은 콜백헬로 인해 가독성이 나쁘고 에러의 처리가 곤란하며 여러개의 비동기 처리를 한번에 처리하는 데도 한계가 있다. 이 이유를 지금부터 살펴보자 이런 get 함수가 있다.g
Promise 생성자 함수는 비동기 처리를 수행할 콜백함수를 인수로 전달받는데 이 콜백함수는 resolve와 reject함수 이다.비동기 함수인 promiseGet은 함수내부에서 프로미스를 생성하고 반환한다. 프로미스는 다음과 같이 현재 비동기 처리가 어떻게 진행되고