변수 메모리 공간을 식별하기 위해 붙인 이름 식별자 값이 아닌 메모리 주소를 가리킴 > ### 메모리 : 데이터를 저장할 수 있는 메모리 셀의 집합체 메모리 주소: 메모리 공간의 위치 메모리 저장값: 모두 2진수 메모리 주소는 상황에 따라 변함 -> 메모리 주소를
1. Primitive Type 1) number 모든 수를 실수로 처리 Infinity, -Infinity, NaN BigInt형: 정수 리터럴 끝에 n 붙이기 2) string "큰 따옴표", '작은 따옴표', 역 따옴표(backtick) immutable v
1. 산술 연산자 1) 이항 산술 연산자 2개의 피연산자를 산술 연산 (피연산자의 값을 변경하는)부수효과 X +, -, *, /, % 2) 단항 산술 연산자 1개의 피연산자를 산술 연산 ++, --: 부수효과 O + 숫자형이 아닌 피연산자에 사용할 경우, 숫자 타입
객체 0개 이상의 프로퍼티로 구성된 집합 프로퍼티: 객체의 상태를 나타내는 값 key, value로 구성 메서드: 프로퍼티를 참조하고 조작할 수 있는 동작 프로퍼티 값이 함수인 경우 원시 값과 달리 변경 가능한 값(mutable) 객체 생성 방법 1. 객체 리터럴
함수 정의 방법 1. 함수 선언문 독자적인 구문의 형테 매개변수는 항상 복사된 값 사용 런타임 이전에 함수 객체 생성 -> 함수 정의되기 전에도 호출 가능(함수 호이스팅) 실제 동작 방식 함수 이름과 동일한 이름의 식별자를 생성한 후, 함수 객체 할당 사실은 함수 이름이 아닌 함수 객체를 가리키는 식별자로 호출됨 2. 함수 표현식 함수 리터럴의 ...
스코프란? : 식별자가 유효한 범위 모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 선언된 위치에 의해 자신을 참조할 수 있는 유효 범위가 결정된다. 스코프 내에서 식별자는 유일해야 한다. var 변수는 같은 스코프 내에서 중복 선언이 허용됨 <- 의도치 않
들어가기 전에 자바 스크립트 명령형, 함수형, 프로토타입 기반, 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어이다. JS를 이루고 있는 거의 "모든 것"이 객체 이다. (원시 타입의 값을 제외한) 객체지향 프로그래밍 : 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임 상태 데이터(프로퍼티)와 동작(메서드)을 하나의 논리적인 단위로 ...
Strict mode(엄격 모드) 란? 문법을 엄격히 적용하여 오류를 발생시킬 가능성이 높거나 최적화 작업에 문제를 일으킬 수 있는 코드에 대해 명시적인 에러를 발생 시킴 ESLint와 같은 린트 도구를 사용해도 유사한 효과 발생 ES6에서 도입된 클래스와 모듈은 기본적으로 적용 'use strict;' 명령어로 사용 > #### ESLint 정적 분석...
들어가기 전에 자바스크립트 객체의 분류 1. 표준 빌트인 객체 ECMAScript 사양에 정의된 객체 2. 호스트 객체 자바스크립트 실행 환경에서 추가로 제공하는 객체 3. 사용자 정의 객체 사용자가 직접 정의한 객체 표준 빌트인 객체 인스턴스를 생성할 수 있는 생성자 함수 객체 Math. Reflect, JSON 제외한 모든 객체 프로토타입 메서...
들어가기 전에 렉시컬 스코프(정적 스코프) JS 엔진은 함수를 어디서 호출했는지가 아닌 함수를 어디에 정의했는지에 따라 상위 스코프를 결정 스코프 실행 컨텍스트의 렉시컬 환경 > #### "함수의 상위 스코프를 결정한다" = "렉시컬 환경의 외부 렉시컬 환경에 대한 참조에 저장할 참조값을 결정한다" 함수 객체의 내부 슬롯 [[Environment]] ...
들어가기 전에 자바스크립트는 프로토타입 기반의 객체 지향언어 클래스가 필요 없는 객체 지향 프로그래밍 언어 (클래스 없이도 생성자 함수와 프로토타입을 통해 구현 가능) 클래스 ES6에서 도입 문법적 설탕 : 기존 프로토타입 기반 패턴을 클래스 기반 패턴처럼 사용할 수 있도록 하는 것 새로운 객체 생성 메커니즘: 생성자 함수 기반의 객체 생성 방식보다 견고...
모든 함수는 일반 함수는 물론 생성자 함수로서 호출 가능 (callable, constructor)메서드(객체에 바인딩된 함수) 또한 일반 함수, 생성자 함수로서 호출 가능메서드 축약 표현으로 정의된 함수(ES6 사양에서 정의 명확히 규정)내부 슬롯 \[HomeObje
배열 여러 개의 값을 순차적으로 나열한 자료구조 인덱스(요소의 위치), 요소(값) 일반 객체와의 차이점 (배열도 객체) | 구분 | 객체 | 배열 |:---:|:---:|:---: | 구조 | 프로퍼티 키/값 | 인덱스/요소 | 값의 참조 | 프로퍼티 키 | 인덱스
이터러블 프로토콜을 준수한 객체 -> 이터러블Symbol.iterator를 프로퍼티 키로 사용한 메서드를 구현 or 상속 받은 객체for ... of, 스프레드 문법, 배열 디스트럭처링 할당의 대상일반 객체에 스프레드 문법의 사용을 허용Array, String, Map
여러 값들의 집합을 펼쳐서 개별적인 값들의 목록으로 만들기사용 대상: 이터러블로 한정값을 생성하는 연산자 X -> 결과값을 변수에 할당 XES6 에서 등장Rest 파라미터와 형태 동일하므로 주의 \- 함수에 전달된 인수들의 목록을 배열로 전달받음 (스프레드와 반대 개
이터러블 or 객체를 1개 이상의 변수에 개별적으로 할당하는 것이터러블 or 객체 리터럴에서 필요한 값만 추출하여 변수에 할당할 때 유용할당 대상: 이터러블할당 기준: 배열의 인덱스할당 대상: 객체할당 기준: 프로퍼티 키 \-> 변수 이름과 프로퍼티 키가 일치하면 할
each < map < filter, forEach < reduce < for loopfor문의 성능이 가장 좋은 게 신기하다..map과 filter의 차이가 심하기에 적절히 사용해야겠다.앞으로 이런 부분도 종종 찾아보며 개발을 해야겠다.
중복되지 않은 유일한 값들의 집합요소의 순서에 의미 X인덱스로 요소 접근 XSet 생성자 함수 이용이터러블을 인수로 전달 받음배열에서 중복된 요소 쉽게 제거 가능Set.prototype.add 메서드 사용add 메서드는 새로운 요소가 추가된 Set 객체 반환 -> 메서
함수를 호출 -> 함수 코드가 평가 -> 함수 실행 컨텍스트가 생성되어 실행 컨텍스트 스택(콜 스택)에 push \-> 함수 실행 종료 -> 실행 컨텍스트 스택에서 pop실행 컨텍스트 스택으로 함수의 실행 순서 관리자바스크립트 엔진은 단 하나의 실행 컨텍스트 스택 가짐
: 함수 내부에 비동기로 동작하는 코드를 포함한 함수비동기 함수 호출 시, 함수 내부의 비동기 코드가 완료되지 않아도 즉시 종료함수 내부의 비동기 코드는 비동기 함수가 종료된 이후에 완료함수 내부의 비동기 코드의 처리 결과를 외부로 반환 or 상위 스코프 변수에 할당할
ES6에서 도입코드 블록의 실행을 일시 중지했다가 필요한 시점에 재개할 수 있는 특수한 함수함수 호출자에게 함수 실행의 제어권 양도 가능함수 호출자와 함수 상태 주고받기 가능함수 호출 시, 함수 코드 블록 실행이 아닌 이터러블이면서 동시에 이터레이터인 제너레이터 객체
일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어JS 고유 문법은 아님대부분의 프로그래밍 언어와 코드 에디터에 내장되어 있음패턴 매칭 기능 제공 \- 특정 패턴과 일치하는 문자열을 검색 / 추출 / 치환하는 기능 패턴과 플래그로 구성패턴을 검색하
\+ 연산자 사용 시, 숫자로 타입 변환되지 않음자기 자신과 일치하지 않는 유일한 값 \- NaN === NaN; // false 조건문 사용 시, 활용 많이 하기 !\[참고] 여러가지 연산자 소개동적 생성 가능접근 방식: 마침표, 대괄호\[참고] 객체의 모든 것