변수 변수란 무엇인가? > 변수는 하나의 값을 저장하기 위해 확해보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다. 간단히 말하면 값의 위치를 가리키는 상직적인 이름이다. 메모리 > 데이터를 저장할 수 있는 메모리 셀의 집합체, 메모
표현식과 문 값 > 값이란 표현식(expression)이 평가(evaluate)되어 생성된 결과를 말한다 리터럴 > 리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법을 말한다. literal의 사전적 정의 : 문자 그대로의 표
자바스크립트는 C나 자바와 다르게 하나의 숫자 타입만 존재한다. 모든 수를 실수로 처리한다.일반적인 문자열과 달리 템플릿 리터럴 내에서는 이스케이프 시퀸스를 사용하지 않고도 줄바꿈이 허용된다표현식의 평가 결과가 문자열이 아니더라도 문자열로 강제로 변환되어 삽입된다.un
2개의 피연산자를 산술 연산하여 숫자 값을 만든다. 산술연산이 불가능할 경우 NaN을 반환한다1개의 피연산자를 산술 연산하여 숫자 값을 만든다숫자 타입이 아닌 피연산자에 + 단항 연산자를 사용하면 피연산자를 숫자 타입으로 변환하여 반환한다.\+'123' => 123(숫
블록문은 단독으로 사용가능하나 일반적으로 제어문이나 함수를 정의할 때 사용한다.블록문의 끝에는 세미콜론을 붙이지 않는다.else if 문과 else문은 옵션이다. 즉 사용할 수도 있고 사용하지 않을 수도 있다. if문과 else문은 2번 이상 사용할 수 없다.대부분의
명시적 타입 변환(타입 캐스팅) : 개발자의 의도에 따라 다른 타입으로 변환할 수 있다.암묵적 타입 변환(타입 강제 변환): 개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 탕비이 변환되는 것.'+' 연산자는 피연산자 중 하나 이
원시 타입의 값은 변경 불가능한 값(immutable value)이지만 객체 타입의 값은 변경 가능 한 값이다 (mutable value)객체는 0개 이상의 프로퍼티로 구성된 집합이며 프로퍼티는 키와 값으로 구성된다.프로퍼티 : 객체의 상태를 나타내는 값메서드 : 프로
원시 값은 변경 불가능한 값(immutable)이고 객체(참조)는 변경가능한 값(mutable)이다.원시값을 변수에 할당하면 실제 값이 저장된다. 객체를 변수에 할당하면 변수에는 참조 값이 저장된다.변수 : 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 메모
함수 함수란? > 함수는 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것이다. 매개변수(parameter) : 함수 내부로 입력을 전달 받는 변수 인수(argument) : 입력 반환값 (return value) : 출력 함수는
모든 식별자는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다. 즉 스코프는 식별자가 유효한 범위를 말한다. var 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언이 허용된다. 이는 의도치 않게 변수값이 재할당 되어 변경
함수 내부에서 선언한 변수는 함수가 호출된 직후에 함수 몸체의 코드가 한 줄씩 순차적으로 실행되기 이전에 자바스크립트 엔진에 의해 먼저 실행된다지역 변수의 생명주기는 함수의 생명주기와 일치한다호이스팅은 스코프를 단위로 동작한다.var 키워드로 선언한 전역변수의 생명주기
var 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용한다.let이나 const 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용하지 않는다.var 키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정한다.let 키워드로 선언한
생성자 함수란 new 연산자와 함께 호출하여 객체(인스턴스)를 생성하는 함수를 말한다동일한 프로퍼티를 갖는 객체를 여러 개 생성해야 하는 경우 매번 같은 프로퍼티를 기술해야 하기 때문에 비효율 적이다생성자 함수에 의한 객체 생성 방식은 마치 객체를 생성하기 위한 템플릿
무명의 리터럴로 생성할 수 있다.변수나 자료구조에 저장할 수 있다.함수의 매개 변수에 전달할 수 있다.함수의 반환값으로 사용할 수 있다.arguments 객체는 함수 호출 시 전달된 인수들의 정보를 담고 있는 순회가능한 유사 배열 객체.함수 내부에서 지역 변수처럼 사용
프로토타입 객체지향 프로그래밍 > - 객체란 속성을 통해 여러개의 값을 하나의 단위로 구성한 복합적인 자료구조를 말한다. 객체지향 프로그래밍은 객체의 상태를 나타내는 데이터와 상태 데이터를 조작할 수 있는 동작을 하나의 논리적인 단위로 묶어 생각한다. 따라서 객체는
전역 스코프와 함수 스코프에도 x변수의 선언이 없기 때문에 에러를 발생시킬 것 같지만 자바스크립트 엔진은 암묵적으로 전역 객체에 x 프로퍼티를 동적 생성한다.이러한 현상을 암묵적 전역이라 한다.strict 모드란 자바스크립트 언어의 문법을 좀 더 엄격히 적용하여 오류를
표준 빌트인 객체 자바 스크립트는 40여개의 표준 빌트인 객체를 제공한다. Math, Reflect, JSON을 제외한 표준 빌트인 객체는 모두 인스턴스를 생성 할 수 있는 생성자 함수 객체다. 표준 빌트인 객체는 프로토타입 메서드와 정적 메서드를 제공하ㅣ고 생성자
this는 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수다. this를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조할 수 있다this 바인딩은 함수 호출 방식에 의해 동적으로 결정된다.일반 함수로 호출하면 함
소스코드 평가 과정에서는 선언문만 먼저 실행한다. 변수 선언문과 함수 선언문이 먼저 실행된다.var 키워드로 선언된 전역 변수와 전역 함수는 전역 객체의 프로퍼티가 된다.전역 변수에 값이 할당되고 함수가 호출된다.매개변수와 지역 변수 선언문이 먼저 실행되고 실행컨텍스트
클로저는 내부 함수로부터 외부함수에의 접근 권한을 주며 이론적으로는 함수 생성 시점에 언제나 생긴다.자바 스크립트 엔진은 함수를 어디서 호출했는지가 아니라 함수를 어디에 정의했는지에 따라 상위 스코프를 결정한다. 이를 렉시컬 스코프라 한다.함수는 자신의 내부 슬롯 \[
클래스는 생성자 함수와 매우 유사하게 동작하지만 몇 가지 차이가 있다.클래스를 new 연산자 없이 호출하면 에러가 발생한다. 생성자 함수를 new없이 호출하면 일반 함수로 호출된다.클래스는 상속을 지원하는 extends와 super 키워드를 제공한다.클래스는 호이스팅이
ES6 이전의 모든 함수는 일반 함수로서 호출할 수 있는 것은 물론 생성자 함수로서 호출할 수 있다.ES6에서는 함수를 사용 목적에 따라 세 가지 종류로 명확히 구분한다.ES6 사양에서 메서드는 메서드 축약 표현으로 정의된 함수만을 의미한다.정의한 메서드는 인스턴스를
자바스크립트에 배열이라는 타입은 존재하지 않는다. 배열은 객체 타입이다.일반 객체와 배열을 구분하는 가장 명확한 차이는 값의 순서와 length 프로퍼티이다.배열의 길이를 나타내는 length 프로퍼티는 0 이상의 정수를 값으로 갖는다.배열에 요소를 추가하거나 삭제하면
String 생성자 함수에 인수를 전달하지 않고 new 연산자와 함께 호출하면 래퍼 객체 생성인수로 문자열을 전달하면 문자열을 할당한 string 레퍼 객체를 생성한다문자열은 원시 값이므로 변경 할 수 없다. 바꾸더라도 에러가 나지 않는다.인수로 전달받은 문자열을 검색
ES6에서 도입된 이터레이션 프로토콜은 순회 가능한 데이터 컬렉션을 만들기위해 ECMAScript 사양에 정의하여 미리 약속한 규칙이다.이터러블 프로토콜을 준수한 객체를 이터러블이라고 한다. 이터러블은 Symbol.iterator를 프로퍼티 키로 사용한 메서드를 직접
스프레드 문법은 하나로 뭉쳐 잇는 여러 값들의 집합을 펼쳐서 개별적인 값들의 목록으로 만든다.일반 객체는 스프레드 문법의 대상이 될 수 없다.스프레드 문법의 결과는 값이 아니므로 할당 불가능 하다.스프레드 문법을 사용하면 더 간결하고 가독성이 좋다.Rest 파라미터는
디스트럭처링 할당(구조 분해 할당)은 구조화된 배열과 같은 이터러블 또는 객체를 1개 이상의 변수에 개별적으로 할당하는 것을 말한다.배열 디스트럭처링 할당을 위해서는 할당 연산자 왼쪽에 값을 할당받을 변수를 선언하고 변수를 배열 리터럴 형태로 선언해야한다.배열 디스트럭
파싱 : 프로그래밍 언어의 문법에 맞게 작성된 텍스트 문서의 문자열을 토큰으로 분해하고 트리 구조의 파스 트리를 생성하는 과정이다. 파싱이 완료된 이후 파스 트리를 중간 언어인 바이트코드를 생성하고 실행한다.렌더링: HTML, CSS, 자바스크립트로 작성된 문서를 파싱
Set > Set 객체는 중복되지 않는 유일한 값들의 집합이다. 배열과 유사 하지만 동일한 값을 포함할 수 없고 인덱스가 없다. Set Set 객체의 생성 Set 생성자 함수에 인수를 전달하지 않으면 빈 Set 객체가 생성된다. 이터러블을 인수로 받아 Set 객체를
Dom >DOM은 HTML 문서의 계층적 구조와 정보를 표현하며 이를 제어할 수 있는 API, 즉 프로퍼티와 메서드를 제공하는 트리 자료구조다. 노드 HTML 요소와 노드 객체 트리 자료구조 노드들의 계층구조로 이뤄진다. 부모노드와 자식노드로 구성되어 노드 간 계층
브라우저는 처리해야 할 특정 사건이 발생하면 이를 감지하여 이벤트를 발생시간다.이벤트가 발생했을 때 호출될 함수를 이벤트 핸들러라 하고 이벤트가 발생했을 떄 브라우저에게 이벤트 핸들러의 호출을 위임하는 것을 이벤트 핸들러 등록 이라 한다.HTML 요소의 어트리뷰트 중에
setTimeout, setInterval : 타이머를 생성할 수 있는 함수.clearTimeout, clearInterval: 타이머를 제거할 수 있는 함수.타이머 함수는 ECMAScript에 정의된 빌트인 함수가 아닌 브라우저 환경과 Node.js 환경에서의 전역
자바 스크립트 엔진은 단 하나의 실행 컨텍스트 스택을 갖는다. 즉 한 번에 하나의 태스크만 실행 할 수 있는 싱글 스레드 방식이다. 위의 예시와 같이 처리에 시간이 걸리는 태스크를 실행하는 경우 블로킹(작업중단)이 발생한다.콜 스택: 함수를 호출하면 실행 컨텍스트가 순
Ajsx란? > Ajax란 자바스크립트를 사용하여 브라우저가 서버에게 비동기 방식으로 데이터를 요청하고 서버가 응답한 데이터를 수신하여 웹페이지를 동적으로 갱신하는 프로그래밍 방식이다. 전통적인 방식의 단점 변경할 필요가 없는 부분까지 포함된 HTML을 서버로 부터
REST(Representational State Transfer), 자원으로 이름을 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미HTTP URI를 통해 자원을 명시하고 HTTP Method(POST, GET, PUT, DELETE, PATCH를 통해 해당 자원
비동기 처리 성공: resolve 함수를 호출해 프로미스를 fulfilled 상태로 변경한다.비동기 처리 실패: reject 함수를 호출해 프로미스를 rejected 상태로 변경한다.fulfilled 또는 rejected 상태를 settled 상태라고한다. 비동기 처리
제네레이터 함수는 함수 호출자에게 함수 실행의 제어권을 양도할 수 있다.함수의 제어권을 함수가 독점하는 것이 아니라 함수 호출자에게 양도(yield)할 수 있다.제네레이터 함수는 함수 호출자와 함수의 상태를 주고받을 수 있다.제네레이터 함수는 함수 호출자에게 상태를 전
try: 실행할 코드(에러가 발생할 가능성이 있는 코드)catch: try 코드 블럭에서 에러가 발생하면 이 코드 블록의 코드가 실행된다.finally: 에러 발생과 상관 없이 반드시 한 번 실행된다.에러를 발생시키려면 try 코드 블록에서 throw 문으로 에러 객체
모듈이란 애플리케이션을 구성하는 개별적 요소로서 재사용 가능한 코드 조각을 말한다.모듈은 개별적 존재로서 캡슐화되어 애플리케이션과 분리되어 존재한다.export: 모듈은 공개가 필요한 자산에 한정하여 명시적으로 선택적 공개가 가능하다.import: 모듈 사용자는 모듈이