4.1 변수란 무엇인가? 왜 필요한가? 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간을 식별하기 위해 붙인 이름이다. 한마디로 "값의 위치를 가리키는 상징적인 이름" 이다. > 변수에 저장된 값 = 변수 값 > 변수에 값을 저장하는 것 = 할당 > 변수에
값은 식이 평가되어 생성된 결과를 말한다.변수는 하나의 값을 저장한 메모리 공간을 식별하기 위해 붙인 이름을 말한다.러터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법을 말한다.... -> 배열 리터럴function(){...} ->
암묵적 타입 변환 자바스크립트 엔전이 스스로 코드의 문맥을 추론하여 암묵적으로 데이터 타입을 강제 변환하는 것. *개발자의 의도와는 다른 타입 변환이 일어날 수 있다. 자바스크립트 엔진이 암묵적으로 x의 타입을 변환시켰지만 실제 x의 타입이 변환되는 것은 아님. -
객체란? 원시값을 제외한 나머지 값은 모두 객체이다. 원시 타입은 변경 불가능한 값 객체는 변경 가능한 값 객체는 프로퍼티로 구성된 집합이면, 키와 값으로 구성됨. 프로퍼티가 함수일 경우, 메서드라고 부름. -> 객체는 프로퍼티와 메서드로 구성된 집합체이다. 객체
원시 타입변경 불가능한 값 메모리에 실제 값이 저장다른 변수에 할당하면 원시 값이 복사되어 전달 (Pass By Value)객체 타입변경 가능한 값메모리에 참조 값이 저장다른 변수에 할당하면 참조 값이 복사되어 전달 (Pass By Reference)한번 생성된 원시
함수는 일련의 과정을 statement로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것.동일한 작업을 반복적으로 수행해야 할 때, 같은 코드를 중복해서 작성할 필요 없음. 재사용성 증가 유지보수 편의성 증가 신뢰성 증가 가독성 증가객체를 리터럴로 생성하는
스코프는 식별자가 유효한 범위를 의미한다.ex) 함수 매개변수의 스코프(유효범위)는 함수 내부로 한정된다.JS엔진은 스코프를 통해 어떤 변수를 참조해야 할 것인지를 결정한다. 이를 '식별자 결정'이라고 부른다.렉시컬 환경(exical environment) : 코드가
전연 변수의 무분별한 사용은 위험하다.반드시 사용해야 할 이유가 없다면 지역 변수로 사용하는 것이 바람직하다.변수는 생성되고 소멸되는 생명 주기가 있다.전역 변수의 생명 주기는 애플리케이션의 생명 주기와 같다.함수 내부 지역 변수의 생명 주기는 함수가 호출되면 생성되
업로드중..ES5까지 변수를 선언할 수 있는 유일한 방법은 var 키워드를 사용하는 것.하지만 다음과 같은 문제점으로 인해 es6에 let, const로 대체됨 변수 중복 선언 허용함수 레벨 스코프 변수 호이스팅위의 이러한 문제점들로 인해 ES6에선 let, cons
16.1 내부 슬롯과 내 메서드 내부 슬롯과 내부 메서드는 JS엔진의 내부 로직이다. 따라서 개발자가 직접적으로 접근이 불가능하지만 proto 키워드를 통해 간접적으로 접근이 가능하다. > 내부 슬롯과 내부 메서드는 [[...]]로 감싼 이름들이다. 16.2
다음과 같은 조건을 만족하는 객체를 일급 객체라고 한다.무명의 리터럴로 생성할 수 있다. ( 런타임에 생성 가능 )변수나 자료구조에 저장할 수 있다.함수의 매개변수에 전달할 수 있다.함수의 반환값을 사용할 수 있다.Javascript에선 함수는 일급 객체로 취급하므로
객체 리터럴 생성 방식은 가장 일반적이고 간단한 객체 생성 방식이다.하지만 Javascript 그 외에도 생성자 함수를 사용하여 객체 생성 방식이 존재한다.new 키워드와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환한다.이후에 프로퍼티 또는 메서드
JS에센 총 7개의 데이터 타입을 제공하고 있다.숫자 타입문자열 타입불리언 타입undefined 타입null 타입심벌 타입객체 타입C나 자바의 경우 정수와 실수를 구분해서 int, long, float, double 같은 다양한 숫자타입을 제공한다.하지만 JS에선 하나
위의 코드를 보면 전역 스코프에서 x 변수 선언을 찾을 것이고, 해당 선언이 없으므로 ReferenceError가 발생할 것처럼 보인다.하지만 javascript에선 전역 객체에 x 프로퍼티를 암묵적으로 생성한다. 이를 암묵적 전역이라고 부른다. 이와 같은 javasc
많은 사람들이 자바스크립트는 public, private, protected와 같은 캡슐화 키워드가 없어서 객체지향 언어가 아니라고 생각한다. 하지만 자바스크립트는 클래스 기반 객체지향 프로그래밍 언어보다 효율적이며 더 강력한 객체지향 프로그래밍 능력을 지닌 프로토타입
JS 객체는 3개의 객체로 분류가 가능하다.표준 빌트인 객체호스트 객체사용자 정의 객체JS는 Object, String, Number, Boolean 등 40여 개의 표준 빌트인 객체를 제공함.이러한 표준 빌트인 객체는 모두 인스턴스를 생성할 수 있는 생성자 함수 객체
업로드중..객체는 메서드를 정의할 때 자신이 속한 객체의 상태(프로퍼티)를 참조하고 변경할 수 있어야 한다.즉, 자신이 속한 객체를 가리키는 식별자를 참조할 수 있어야 한다.위와 같이 객체를 리터럴로 생성할 경우, 런타임 이전에 객체가 생성되므로 circle이라는 식별
배열은 여러 개의 값을 순차적으로 나열한 자료구조이다. 배열이 가지고 있는 값을 요소라고 부른다. 자바스크립트에서 값으로 인정하는 모든 것이 배열 요소가 될 수 있다.배열에서는 위치를 나타내는 0 이상의 정수인 인덱스를 갖는다.배열은 요소의 개수, 즉 배열의 길이
JS는 배열에 관련한 유용한 다양한 빌트인 메서드를 제공한다.배열 메서드는 결과물을 반환하는 패턴이 크게 2가지가 있다. 원본 배열을 직접 변경하는 메서드 원본 배열을 변경하지 않고 새로운 배열을 생성하여 반환하는 메서드 Array.isArray는 전달된 인수가
원주율 PI 값을 반환한다.인수로 전달된 숫자의 절댓값을 반환한다.인수로 전달된 숫자의 소수점 이하를 반올림한 정수를 반환한다.인수로 전달된 숫자의 소수점 이하를 올림한 정수를 반환한다.인수로 전달된 숫자의 제곱근을 반환한다.임의의 난수를 발생시켜 반환한다.반환한 난수
Number 객체는 생성자 함수 객체이다.new 연산자와 함께 호출하여 Number 인스턴스를 생성할 수 있다.Number 생성자 함수에 인수를 전달하지 않으면 \[NumberData]에 0이 할당된 Number 래퍼 객체를 생성한다.Number.EPSION은 매우 작
표준 빌인 객체인 Date는 날짜와 시간을 위한 메서드를 제공하는 표준 빌트인 객체이면서 생성자 함수이다.UTC와 KST UTC는 국제 표준시를 말한다. KST는 UTC에 9시간을 더한 시간으로 한국 표준시를 말한다. 날짜와 시간은 JS코드가 실행되는 시스템의 시
심벌은 ES6에서 도입된 7번째 데이터 타입으로 변경 불가능한 원시 타입의 값이다.심벌 값은 다른 값과 중복되지 않는 유일무이한 값이다.Symbol 함수를 호출하여 심벌을 생성할 수 있다.이때 생성된 값은 다른 값과 절대 중복되지 않는 유일무이한 값이다.또한 심벌 값은
이터레이션 프로토콜은 순회 가능한 데이터 컬렉션(자료구조)를 만들기 위해 ECMAScript 사양에 정의하여 미리 약속한 규칙이다. 이터레이션 프로토콜에는 이터러블 프로토콜과 이터레이터 프로토콜이 있다.이터러블 프로토콜 Symbol.iterator를 직접 구현하거나
ES6의 배열 디스트럭처링 할당은 배열의 각 요소를 배열로부터 추출하여 1개 이상의 변수에 할당한다.이때 우변에 이터러블 할당되어야 한다. 만약 이터러블이 아닌 다른 것이 할당되면 에러가 발생한다.배열 디스트럭처링 할당의 기준은 배열의 인덱스이다. 즉, 순서대로 할당
Set 객체는 중복되지 않는 유일한 값들의 집합이다.Set 객체는 배열과 유사하지만 다음과 같은 차이가 존재한다. Set 객체는 생성자 함수로 생성한다.이때 인수를 전달하지 않으면 빈 Set 객체가 생성된다.Set 생성자 함수는 이터러블을 인수로 받아 Set 객체를
Event Driven Programming 브라우저는 처리해야 할 특정 사건이 발생하면 이를 감지하여 이벤트를 발생시킨다. 이벤트가 발생했을 때, 호출될 함수를 이벤트 핸들러라고 한다. 이벤트 핸들러를 브라우저에게 위임하는 것을 이벤트 핸들러 등록이라고 한다.
자바스크립트는 비동기 처리를 위해 콜백 함수를 사용한다.하지만 콜백 패턴은 가독성이 나쁘고 에러 처리가 곤란하다는 단점이 있다.이에 ES6에서 비동기 처리를 위해 프로미스(Promise)를 도입했다.콜백 헬위 예제에서 get 함수는 서버의 응답 결과를 콘솔에 출력한다.