데이터 타입 기본형 vs 참조형 우선 기본형으로는 숫자, 문자, null, undefined, 심볼이 있습니다. 참조형으로는 객체, 배열, 함수, 날짜, 정규표현식, map, weakmap, set, weakset 이 있습니다. -객체란 변수, 자료구조, 함수, 메서드
실행 컨텍스트: 실행할 코드에 제공할 환경 정보들을 모아놓은 객체입니다. 호이스팅: 끌어올린다는 의미의 hoist에 ing를 붙여 만든 동명사로, 변수 정보를 수집하는 과정을 더욱 이해하기 쉬운 방법으로 대체한 가상의 개념입니다. 인자들과 함께 함수를 호출할 경우 매개
자바스크립트에서 this는 함수를 호출할때 결정됩니다. 자바스크립트의 모든 변수는 실은 특정 객체의 프로퍼티로 동작합니다. this에는 호출할 주체에 대한 정보가 담김니다. 전역변수를 선언하면 자바스크립트 엔진은 이를 전역객체의 프로퍼티로 할당합니다. 함수 vs 메서
timer 변수에는 setInterval의 ID값이 담깁니다. setInterval에 전달한 첫 번째 인자인 cbFunc 함수(이 함수가 콜백함수)는 1000초 마다 실행map 메서드는 첫 번째 인자로 callback 함수를 받고, 생략 가능한 두 번째 인자로 콜백 함
🤔자바스크립트를 공부하다 보니까 배열을 쓰는 문제가 많이 나왔고 배열 메서드 또한 매우 중요하다는 것을 머지않아 깨달았다. pop push unshift shift splice concat every some forEach map
자바스크립트에서 함수는 특별한 객체이다. 객체와 마찬가지로 함수에는 프로퍼티와 함수가 존재하며, 함수를 변수, 배열, 객체에 할당하거나 다른 함수에 인자로 전달할 수 있다.크롬창 에서 개발자 도구를 열어 함수, 객체, 배열의 프로퍼티를 살펴보자아래와 같이 함수는 5개의
arguments란, 함수에 전달되는 인수들을 배열 형태로 나타낸 객체이다. 자바스크립트에서 전달된 인수와 매개변수의 개수는 서로 같지 않아도 된다. 매개변수의 개수보다 인수가 더 적을 경우 넘어오지 않은 값은 undefined로 표시된다.즉, 함수에 넘어오는 인수가
범위는 기본적으로 변수를 사용할 수 있는 위치를 의미한다. var선언은 전역 범위 혹은 함수 범위로 지정var변수가 함수 외부에서 선언될 때의 범위는 전역이다. 즉, 함수 블록 외부에서 var을 사용하여 선언된 모든 변수를 전체 왼도우 상에서 사용 가능. 그에 반면 v
iterable 객체란 for...of 등의 문법을 이용하여 각 요소를 반복할 수 있는 객체를 의미한다. 배열 array 객체는 내장 iterable 객체이기 때문에 for..of 문법을 이용하여 각 요소를 반복할 수 있었던 것. 또한 String 객체, Map 객체,
위와 같은 코드 처럼 inner함수의 실행시점에는 outer함수는 이미 실행이 종료된 상태인데 outer함수의 lexicalEnvironment에 접근할수 있는 이유는 가비지 컬렉터의 동작 방식 때문입니다. 가비지 컬렉터는 어떤 값을 참조하는 변수가 하나라도 있다면
prototype이라는 프로퍼티와 proto라는 프로퍼티가 새로 등장했는데, 이 둘의 관계가 프로토타입 개념의 핵심이다.❗️prototype은 객체이다. 이를 참조하는 proto 역시 당연히 객체이다. 이를 참조하는 proto역시 당연히 객체이다. prototype 객
심벌Symbol은 ES6에서 도입된 7번째 데이터 타입으로 변경 불가능한 원시 타입의 값이다. 심벌 값은 다른 값과 중복되지 않은 유일무이한 값이다. 따라서 주로 이름의 충돌 위험이 없는 유일한 프로퍼티 키를 만들기 위해 사용한다. 프로퍼티 키로 사용할 수 있는 값은
ES6에서 도입된 이터레이션 프로토콜을 순회 가능한 데이터 컬렉션(자료구조)을 만들기 위해 ECMAScript 사양에 정의하여 미리 약속한 규칙이다.😢ES6이전의 순회 가능한 데이터 컬렉션, 즉 배열, 문자열, 유사 배열 객체, DOM 컬렉션 등은 통일된 규약 없이
객체란? 자바스크립트는 객체 기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 "모든 것"이 객체다. 원시 값을 제외한 나머지 값(함수, 배열, 정규 표현식 등)은 모두 객체다. 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키 와 값으로 구성된
함수는 자바스크립트에서 가장 중요한 핵심 개념이다. 또 다른 자바스크립트의 핵심 개념인 스코프, 실행 컨텍스트, 클로저, 생성자 함수에 의한 객체 생성, 메서드, this, 프로토타입, 모듈화 등이 모든 함수와 깊은 관련이 있다.프로그래밍 언어의 함수는 일련의 과정을
스코프(scope)-유효범위는 가바스크립트를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념이다.❗️자바스크립트의 스코프는 다른 언어의 스코프와 구별되는 특징이 있으므로 주의가 필요하다. 그리고 var키워드로 선언한 변수와 let 또는 const키워드로 선언한 변
변수는 자신인 선언된 위치에서 생성되고 소멸한다. 전역 변수의 생명 주기는 애플리케이션의 생명 주기와 같다. ❗️하지만 함수 내부에서 선언된 지역 변수는 함수가 호출되면 생성되고 함수가 종료하면 소멸한다.❗️지역 변수의 생명주기는 함수의 생명 주기와 일치한다.전역 벼수
var 키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정한다. 따라서 함수 외부에서 var키워드로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역 변수가 된다.for문은 변수 선언문에서 var키워드로 선언한 변수도 전역 변수가 된다.var키워드
내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티와 의사 메서드다. ECMAScript 사양에 등장하는 이중 대괄호 (\[...])로 감싼 이름들이 내부 슬롯과 내부 메서드다.❗️예를 들어
new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환한다. 빈 객체를 생성한 이후 프로퍼티 또는 메서드를 추가하여 객체를 완성할 수 있다.❗️생성자 함수란 new연산자와 함께 호출하여 객체(인스턴스)를 생성하는 함수를 말한다. 생성자 함수에
다음과 같은 조건을 만족하는 객체를 일급 객체라 한다.1\. 무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다2\. 변수나 자료구조(객체, 배열 등)에 저장할수 있다.3\. 함수의 매개변수에 전달할 수 있다.4\. 함수의 반환값으로 사용할 수 있다.일급
프로토타입 자바스크립트는 객체 기반의 프로그래밍 언어이며 자바스크립트를 이루고 있는 거의 "모든 것"이 객체다. 원시 타입 primitive type의 값을 제외한 나머지 값들(함수, 배열, 정규 표현식 등)은 모두 객체다. 객체지향 프로그래밍 객체지향 프로그래밍은
strict mode란? 자바스크립트 엔진은 먼저 foo함수의 스코프에서 x변수의 선언을 검색한다. foo 함수의 스코프에는 x변수의 선언이 없으므로 검색에 실패할 것이고, 자바스크립트 엔진은 x변수를 검색하기 위해 foo함수 컨텍스트의 상위 스코프(위 예제의 경우
자바스크립트 객체는 다음과 같이 크게 3개의 객체로 분류할 수 있다.자바스크립트는 Object, String, Number, Boolean, Symbol, Date, Math, RegExp, Array, Map/Set, WeakMap/WeakSet, Function,
this 키워드 객체지향 프로그래밍에서 살펴보았듯이 객체는 상태를 나타내는 프로퍼티와 동작을 나타내는 메서드를 하나의 논리적인 단위로 묶은 복합적인 자료구조이다. 동작을 나타내는 메서드는 자신이 속한 객체의 상태. 즉 프로퍼티를 참조하고 변경할 수 있어야 한다. 이때
객체(함수)는 오직 하나의 책임을 가져야 한다.(객체(함수)는 오직 하나의 변경의 이유만을 가져야 한다.)같은 이유로 변경될 코드들은 모으고, 다른 이유로 변경될 코드들은 흩어라함수는 한가지 작업을 수행해야 합니다. 이것은 소프트웨어 엔지니어링에서 단연코 가장 중요한
클로저는 자바스크립트 고유의 개념이 아니다. 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어(예: 하스켈, 리스프, 얼랭, 스칼라 등)에서 사용되는 중요한 특성이다. 아래의 코드에서 먼저 이해애햐 할 핵심 키워드는 ❗️함수가 선언된 렉시컬 환경이다. oute
업로드중..화살표 함수는 function 키워드 대신 화살표 함수(=>)를 사용하여 기존의 함수 정의 방식보다 간략하게 함수를 정의할 수 있다. 화살표 함수는 표현만 간략한 것이 아니라 내부 동작도 기존의 함수보다 간략하다. ❗️특히 화살표 함수는 콜백 함수 내부에서
클래스는 프로토타입의 문법적 설탕인가? 자바스크립트는 프로토타입 기반 객체지향 언어다. 비록 다른 객체지향 언어와의 차이점에 대한 논쟁이 있기 하지만 자바스크립트는 강력한 객체지향 프로그래밍 능력을 지니고 있다. ❗️클래스와 생성자 함수는 모두 프로토타입 기반의 인스
모듈이란 애플리케이션을 구성하는 개별적 요소로서 재사용 가능한 코드 조각을 말한다. 일반적으로 모듈을 기능을 기준으로 파일 단위로 분리한다. 이때 모듈이 성립하려면 모듈은 자신만의 ❗️파일 스코프(모듈 스코프)를 가질 수 있어야 한다.애플리케이션과 완전히 분리되어 개별
배열 배열은 여러 개의 값을 순차적으로 나열한 자료구조다. 자바스크립트는 배열을 다루기 위한 유용한 메서드를 다수 제공한다. 배열은 사용 빈도가 높으므로 배열 메서드를 능숙하게 다를 수 있다면 코딩에 매우 도움이 됩니다. 배열이 가지고 있는 값을 요소라고 부른다. 자
이전의 웹페이지는 html태그로 시작해서 html태그로 끝나는 완전한 HTML틀 서버로부터 전송받아 웹페이지 전체를 처음부터 다시 렌더링하는 방식으로 동작했다. 따라서 화면이 전환되면 서버로부터 새로운 HTML을 전송받아 웹페이지 전체를 처음부터 다시 렌더링했다.😢
REST는 HTTP를 기반으로 클라이언트가 서버의 리소스에 접근하는 방식을 규정한 아키텍처고, REST API는 REST를 기반으로 서비스 API를 구현한 것을 의미한다. REST API의 구성 REST API는 자원, 행위, 표현의 3가지 요소로 구성된다. REST는
ES6에서는 비동기 처리를 위한 또 다른 패턴으로 프로미스를 도입했다. 프로미스는 전통적인 콜백 페턴이 가진 단점을 보완하며 비동기 처리 시점을 명확하게 표현할 수 있다는 장점이 있다. 비동기 처리를 위한 콜백 패턴의 단점 콜백 헬 ❗️❗️get함수는 비동기 함수다.
ES6에서 도입된 제너레이터는 코드 블록의 실행을 일시 중지했다가 필요한 시점에 재개할 수 있는 특수한 함수다. 제너레이터와 일반 함수의 차이는 다음과 같다.일반 함수를 호출하면 제어권이 함수에게 넘어가고 함수 코드를 일괄 실행한다. 즉 함수 호출자는 함수를 호출한 이
변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하 위해 붙인 이름이라고 했다. 따라서 변수에 할당되는 것은 값이다.🤔값은 다양한 방법으로 생성할 수 있다. 위 예제처럼 식으로 생성할 수도 있지만 가장 기본적인 방법은 리터럴을 사
"실행 컨텍스트"에서 살펴본 바와 같이 함수를 호출하면 함수 코드가 평가되어 함수 실행 컨텍스트가 생성된다. 이때 생성된 함수 실행 컨텍스트는 실행 컨텍스트 스택(콜 스택 이라고 부른다.)에 푸시되고 함수 코드가 실행된다. 함수 코드의 실행이 종료하면 함수 실행 컨텍스
디스트럭처링 할당(구조 분해 할당)은 구조화된 배열과 같은 이터러블 또는 객체를 destructing(비구조화, 구조 파괴)하여 1개 이상의 변수에 개별적으로 할당하는 것을 말한다. 배열과 같은 이터러블을 또는 객체 리터럴에서 필요한 값만 추출하여 변수에 할당할 때 유