
11장 원시값과 객체의 비교 1. 원시 값 1.1 원시 값이란? 원시 타입의 값 숫자, 문자열, boolean, null, undefined, 심벌 타입의 값을 의미 1.2 특성 불변성을 가진다 메모리에 한 번 할당된 원시 값은 변경할 수 없다. 따라서 변수에
함수 선언문을 함수 표현식처럼 쓰더라도 대게 자바스크립트 엔진은 오류를 내지 않고 해석을 해준다.반면 함수 표현식처럼 함수 이름을 생략하고 함수 선언문처럼 쓸 수는 없다.함수 선언문에 이름이 없다면 호출할 방법이 있을까?함수 선언문으로 정의한 함수는 선언한 위치보다 위
var는 같은 스코프 내에서도 변수 중복 선언이 가능하지만, 실수로도 그렇게 쓰지 말 것🤮그리고 만약 스코프가 수직으로 다르더라도 같은 변수명 중복은 무조건 피할 것스코프가 중첩되어 계층 구조를 갖는 것상위 스코프에서 유효한 변수는 하위 스코프에서 자유롭게 참조할 수
변수는 자신이 선언된 스코프에서 생성되고 소멸한다지역 변수의 생명 주기는 함수의 생명 주기와 일치한다전역변수의 생명 주기는 전역 객체 window의 생명주기와 일치한다즉, 웹 페이지가 열린 시점부터 닫힐 때까지😇암묵적 결합스코프를 가리지 않고 모든 코드가 전역 변수에
변수 중복 선언 허용함수 레벨 스코프변수 호이스팅이처럼 var는 다른 프로그래밍 언어와는 다른 특성을 가지고 있고 문법이 엄격하지 않기 때문에, 가독성이 떨어지거나 오류를 유발하게 된다변수 중복 선언 금지블록 레벨 스코프변수 호이스팅전역 객체와 letlet은 var의
js 스펙으로 정의된 내부 프로퍼티로써, 개발자가 직접 접근할 수 있는 외부 프로퍼티는 아니다.prototype과 같이 일부 내부 슬롯이나 내부 메서드에 간접적으로 접근할 수는 있다책의 16장에서는 객체의 프로퍼티만 다룬다원시 타입도 프로퍼티가 존재한다책의 설명은 Ob
new 연산자를 사용해 Object 생성자 함수를 호출할 수 있다.Object 외에도 String, Number, Boolean, Function, Array, Date, RegExp, Promise 등의 빌드인 생성자 함수를 제공한다.하지만 객체 리터럴을 사용하는 편
다음 조건을 만족하는 객체를 일급 객체라 한다.(프로그래밍 언어 전반에 적용되는 내용)무명의 리터럴로 생성할 수 있다.(런타임에 생성이 가능하다)변수나 자료구조(객체, 배열 등)에 저장할 수 있다.함수의 매개변수에 전달할 수 있다.함수의 반환 값으로 사용할 수 있다.J

19장 프로토타입
변수 선언이 안되어 있는데, 변수 할당이 됐다😯암묵적 전역 : 변수 선언이 존재하지 않으면, JS는 전역 객체에 해당 변수와 동일하게 사용할 수 있는 프로퍼티를 동적 생성한다🤬위와 같은 js의 동작은 실수와 오류를 유발하므로, ES5부터 strict mode가 추가
표준 빌트인 객체 : ECMAScript 스펙으로 정의된 객체. 전역 객체의 프로퍼티로서 언제나 사용 가능호스트 객체 : 브라우저나 Node.js 등 자바스크립트 실행 환경에서 제공하는 객체. DOC, Canvas, SVG, Web Storage 등등사용자 정의 객체
객체는 프로퍼티와 메서드를 하나의 논리적인 단위로 묶은 자료구조메서드는 프로퍼티를 참조하고 변경할 수 있어야 한다메서드가 자신이 속한 객체의 프로퍼티를 참조하려면, 자신이 속한 객체를 가리키는 식별자를 참조할 수 있어야 한다생성자가 미래에 생성할 인스턴스를 가리킬 키워

🤔그러면 xx내부 코드는 소스 코드가 아닌건가?전역 코드는 전역 변수를 관리하기 위해 최상위인 전역 스코프를 생성해야 한다var 키워드로 선언된 전역 변수와 함수 선언문으로 정의된 전역 함수를 전역 객체의 프로퍼티와 메서드로 바인딩하고 참조하기 위해 전역 객체와 연결
클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다.자바스크립트 엔진은 함수를 어디서 호출했는지가 아니라 함수를 어디에 정의했는지에 따라 상위 스코프를 결정한다.foo() 안에서 bar()를 호출하더라도, bar가 바라보는 x는 전역의 x이다.bar() 어디에서

프로토타입과 생성자 함수로 상속을 구현할 수 있다.그러면 클래스는 왜 필요한 걸까?생성자 함수와 클래스는 유사하지만, 다음 차이가 있다.클래스를 표현식으로 정의할 수 있다? => 일급 객체다무명의 리터럴로 생성 가능 => 런타임에 생성 가능변수나 자료구조(객체, 배열
ES6 이전까지의 함수는 목적에 따라 다양한 방법으로 호출이 가능했다이것은 실수를 유발하고 성능에도 악영향을 끼친다문제점객체에 바인딩된 함수를 생성자 함수로 호출 가능하다.콜백 함수도 생성자 함수로 호출이 가능하다.이런 함수들은 prototype 프로퍼티를 갖고 불필요
배열은 배열 리터럴, Array 생성자 함수, Array.of, Array.from 메서드로 생성할 수 있다배열은 객체지만, 일반 객체와는 다음과 같은 차이점이 있다.배열은 값의 순서를 갖고 있어서 순차 접근이 가능하다.밀집 배열 : 일반적인 배열. 각 요소가 동일한
Number 표준 빌트인 객체가 제공하는 프로퍼티와 메서드를 알아본다Number 객체는 생성자 함수 객체이므로, new 연산자와 호출하여 Number 인스턴스 생성이 가능ES6 도입1과 1보다 큰 숫자 중에서 가장 작은 부동소수점 숫자와의 차이 => 2.22044604
Math는 수학적인 상수와 함수를 위한 프로퍼티와 메서드 제공생성자 함수가 아니므로, 정적 프로퍼티와 정적 메서드만 제공원주율인자로 전달된 숫자의 절대값 반환절대값은 반드시 0 또는 양수여야 한다.인자로 전달된 숫자의 소수점 이하를 반올림한 정수를 반환소수점 이하를 올
생성자 함수표시되는 시간은 JS 코드가 실행된 시스템의 시간 기준Date 생성자 함수로 생성한 Date 객체는 기본적으로 현재 날짜와 시간을 나타내는 정수값을 가진다.다른 날짜를 다루려면 생성자 함수에 인수를 주면 된다.Date 생성자 함수로 객체를 생성하는 방법은 다
일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어JS 고유 문법이 아니며, JS는 Perl의 정규 표현식 문법을 사용문자열을 대상으로 패턴 매칭 기능을 제공변수를 사용해 동적으로 RegExp 객체 생성 가능인자로 전달받은 문자열에 대해 정규 표현식의
표준 빌트인 객체인 String은 생성자 함수 객체생성자 함수에 인수를 전달하지 않고 new 연산자와 함께 호출 시, \[StringData] 내부 슬롯에 빈 문자열을 할당한 String 래퍼 객체를 생성생성자 함수에 인수를 전달하고 new 연산자와 함께 호출 시, \
변경 불가능한 원시 타입의 값다른 값과 중복되지 않은 유일무이한 값이름의 충돌 위험이 없는 유일한 프로퍼티 키를 만들기 위해 사용리터럴 표기법 사용 불가능반드시 Symbol 함수를 호출해 생성해야 한다단, boolean으로는 암묵적으로 타입 변환 가능인수로 전달 받은
이터러블인 객체나 타입을 개별적인 값들의 목록으로 만든다함수 호출에서의 스프레드 문법Rest파라미터와 스프레드 문법의 차이배열 결합배열 중간에 요소 추가slice 메서드ES5에서는 Function.prototype.apply 또는 call 메서드를 사용하여 slice
구조화된 배열과 같은 이터러블 또는 객체를 destructuring(비구조화)하여 1개 이상의 변수에 개별적으로 할당하는 것ES5에서 디스트럭처링하려면,ES6의 배열 디스트럭처링 할당기본 사용법배열 디스트럭처링 할당의 기준은 배열의 인덱스기본값 설정 가능Rest 요소
ES6에서 도입된 이터레이션 프로토콜은 순회 가능한 데이터 컬렉션을 만들기 위해 ECMAScript 사양에 정의된 규칙이터러블 프로토콜Well-known Symbol인 Symbol.iterator 프로퍼티 키로 사용한 메서드를 직접 구현하거나 프로토타입 체인을 통해 상
중복되지 않는 유일한 값들의 집합...순서에 무슨 의미가 있지?🤔아마도 순서가 보장되고 index를 갖는다는 의미인듯. Set은 index가 없고.생성자 함수를 이용한 Set 객체 생성중복이 제거되는 특성을 활용해 배열에서 중복 제거Set.prototype.size

기본 용어파싱 : 언어의 문법에 맞게 작성된 텍스트 문서를 읽어들여 실행하기 위해 다음과 같은 동작을 하는 것 => 텍스트 문서의 문자열을 토른으로 분해(어휘분석)하고, 토큰에 문법적 의미와 구조를 반영하여 트리 구조의 자료구조인 파스 트리를 생성.일반적으로 파싱이 완

HTML 요소 : HTML 문서를 구성하는 개별적인 요소를 의미. 렌더링 엔진에 의해 파싱되어 DOM을 구성하는 요소 노드 객체로 변환된다.HTML 문서 : HTML 요소들의 집합이며, HTML 요소는 트리 구조와 같은 중첩 관계를 갖는다.노드 객체는 총 12개 타입

이벤트 드리븐 프로그래밍: 프로그램의 흐름을 이벤트 중심으로 제어하는 프로그래밍이벤트핸들러 : 이벤트가 발생했을 때 호출될 함수이벤트 핸들러 등록 : 이벤트가 발생했을 때 브라우저에 이벤트 핸들러의 호출을 위임하는 것※ 사용자가 언제 함수 호출을 언제할 지 개발자는 알

호출 스케줄링 : 함수를 일정 시간이 경과된 이후에 호출되도록 예약하는 것자바스크립트는 타이머를 생성할 수 있는 타이머 함수 setTimeout과 setInterval, 타이머를 제거할 수 있는clearTimeout과 clearInterval을 제공타이머 함수는 ECM

"실행 컨텍스트"에서 살펴본 바와 같이 함수를 호출하면 함수 코드가 평가되어 함수 실행 컨텍스트가 생성된다이때 생성된 실행 컨텍스트는 실행 컨텍스트 스택(콜 스택)에 푸시되고 함수 코드가 실행된다함수 코드의 실행이 종료하면 함수 실행 컨텍스트는 스택에서 팝되어 제거된다
전통적인 방식의 웹페이지 통신 방법화면이 전환되면 html 태그로 시작하여 html 태그로 끝나는 완전한 html을 서버로부터 전송받아 웹페이지 전체를 다시 렌더링하는 방식으로 동작다음과 같은 단점변경할 필요가 없는 부분까지 HTML을 서버로부터 매번 다시 전송받기 때
REST : HTTP를 기반으로 클라이언트가 서버의 리소스에 접근하는 방식을 규정한 아키텍처REST API : REST를 기반으로 서비스 API를 구현한 것RESTful : REST의 기본 원칙을 성싱히 지킨 서비스 디자인URI는 리소스를 표현하는데 중점을 두어야 한다
자바스크립트는 비동기 처리를 위한 하나의 패턴으로 콜백 함수를 사용하지만 전통적인 콜백 패턴은 1) 콜백 지옥으로 인해 가독성이 나쁘고, 2) 비동기 처리 중 발생한 에러의 처리가 곤란하며, 3) 여러 개의 비동기 처리를 한 번에 처리하는 데도 한계가 있다 위는
제너레이터ES6에서 도입코드 블록의 실행을 일시 중지했다가 필요한 시점에 재개할 수 있는 특수한 함수제터레이터와 일반 함수의 차이제너레이터 함수는 함수 호출자에게 함수 실행의 제어권을 양도할 수 있다일반 함수 : 호출하면 제어권이 함수에게 넘어가고 함수 코드를 실행=>
에러가 전혀 없는 프로그래밍은 불가능따라서 에러 대책을 미리 구비해둬야 한다방치된 에러는 프로그램을 강제로 종료 시킨다따라서 위처럼 try...catch 문으로 에러를 대응하곤 했다그런데 위 querySelector처럼 직접적으로 발생하지 않을 수도 있다위 경우 직후