Study/Javascript (44) 썸네일형 리스트형 모던 자바스크립트 Deep Dive 30장 Date UTC(협정 세계시: Coordinated Universal Time)는 국제 표준시를 말한다. UTC는 GMT(그리니치 평균시: Greenwich Mean Time)로 불리기도 한다. 기술적인 표기에서는 UTC가 사용된다. KST(한국 표준시: Korea Standard Time)는 UTC에 9시간을 더한 시간이다. 현재 날짜와 시간은 자바스크립트 코드가 실행된 시스템의 시계에 의해 결정된다. 30.1 Date 생성자 함수 Date는 생성자 함수다. Date 생성자 함수로 생성한 Date 객체는 내부적으로 날짜와 시간을 나타내는 정수값을 갖는다. Date 생성자 함수로 생성한 Date 객체는 기본적으로 현재 날짜와 시간을 나타내는 정수값을 가진다. 현재 날짜와 시간이 아닌 다른 날짜와 시간을 다.. 모던 자바스크립트 Deep Dive 29장 Math 표준 빌트인 객체인 Math는 수학적인 상수와 함수를 위한 프로퍼티와 메서드를 제공한다. Math는 생성자 함수가 아니다. 따라서 Math는 정적 프로퍼티와정적 메서드만 제공한다. 29.1 Math 프로퍼티29.1.1 Math.PI원주율 PI 값을 반환한다. 29.2 Math 메서드 29.2.1 Math. abs Math.abs 메서드는 인수로 전달된 숫자의 절대값을 반환한다. 절대값은 반드시 0 또는 양수이어야 한다.Math.abs(-1); // -> 1Math.abs('-1'); // -> 1Math.abs(''); // -> 0Math.abs([]); // -> 0Math.abs(null); // -> 0Math.abs(undefined); .. 모던 자바스크립트 Deep Dive 28장 Number 28.1 Number 생성자 함수표준 빌트인 객체인 Number 객체는 생성자 함수 객체다. 따라서 new 연산자와 함께 호출하여 Number 인스턴스를 생성할 수 있다. Number 생성자 함수에 인수를 전달하지 않고 new 연산자와 함께 호출하면 [[NumberData]] 내부 슬롯에 0을 할당한 Number 래퍼 객체를 생성한다.const numObj = new Number();console.log(numObj); // Number {[[PrimitiveValue]]: 0} Number 생성자 함수의 인수로 숫자를 전달하면서 new 연산자와 함께 호출하면 [[NumberData]] 내부 슬롯에 인수로 전달받은 숫자를 할당한 Number 래퍼 객체를 생성한다.const numObj = new Num.. 모던 자바스크립트 Deep Dive 26장 ES6 함수의 추가 기능 26.1 함수의 구분ES6에서는 함수를 사용 목적에 따라 세 가지 종류로 명확히 구분했다.ES6 함수의 구분constructorprototypesuperarguments일반 함수(Normal)OOXO메서드(Method)XXOO화살표 함수(Arrow)XXXX 26.2 메서드ES6 사양에서 메서드는 축약 표현으로 정의된 함수만을 의미한다.const obj = { x: 1, // foo는 메서드이다. foo() { return this.x; }, // bar에 바인딩된 함수는 메서드가 아닌 일반 함수이다. bar: function() { return this.x; }};console.log(obj.foo()); // 1console.log(obj.bar()); // 1 ES6 사양에서 정의한 .. 모던 자바스크립트 Deep Dive 25장 클래스 25.1 클래스는 프로토타입의 문법적 설탕인가?클래스와 생성자 함수는 모두 프로토타입 기반의 인스턴슬 생성하지만 정확히 동일하게 동작하지는 않는다. 클래스는 생성자 함수보다 엄격하며 생성자 함수에서는 제공하지 않는 기능도 제공한다. 클래스는 생성자 함수와 매우 유사하게 동작하지만 다음과 같이 몇 가지 차이가 있다.클래스를 new 연산자 없이 호출하면 에러가 발생한다. 하지만 생성자 함수를 new 연산자 없이 호출하면 일반 함수로서 호출된다.클래스는 상속을 지원하는 extends와 super 키워드를 제공한다. 하지만 생성자 함수는 extends와 super 키워드를 지원하지 않는다.클래슨 ㄴ호이스팅이 발생하지 않는 것철 ㅁ동작한다. 하지만 삼수 선언문으로 정의된 생성자 함수는 함수 호이스팅이, 함수 표현.. 모던 자바스크립트 Deep Dive 24장 클로저 클로저는 자바스크립트 고유의 개념이 아니다. 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어(ex: 하스켈, 리스프, 얼랭, 스칼라 등)에서 사용되는 중요한 특성이다. MDN에서는 클로저에 대해 다음과 같이 정의하고 있다. "A closer is the combination of a function and the lexical environment within which that function was decleared."클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. 24.1 렉시컬 스코프 자바스크립트 엔진은 함수를 어디서 호출했는지가 아니라 함수를 어디에 정의했는지에 따라 상위 스코프를 결정한다. 이를 렉시컬 스코프(정적 스코프)라 한다. 함수의 상위 스코프는 함수를 정의한 위치.. 모던 자바스크립트 Deep Dive 23장 실행 컨텍스트 실행 컨텍스트는 자바스크립트의 동작 원리를 담고 있는 핵심 개념이다. 실행 컨텍스트를 바르게 이해하면호이스팅 발생이유 , 클로저의 동작 방식, 태스크 큐와 함께 동작하는 이벤트 핸들러, 비동기 처리의 동작 방식을이해할 수 있다. 23.1 소스코드의 타입ECMAScript 사양은 소스코드(ECMAScript code)를 4가지 타입으로 구분한다. 4가지 타입의 소스코드는 실행 컨텍스트를 생성한다.소스코드의 타입설명전역 코드(global code)전역에 존재하는 소스코드를 말한다. 전역에 정의된 함수, 클래스 등의 내부 코드는 포함되지 않는다.함수 코드(function code)함수 내부에 존재하는 소스코드를 말한다. 함수 내부에 중첩된 함수, 클래스 등의 내부 코드는 포함되지 않는다.eval 코드(eva.. 모던 자바스크립트 Deep Dive 22장 this 22.1 this 키워드객체 = 상태를 나타내는 프로퍼티 + 동작을 나타내는 메서드 생성자 함수를 정의하는 시점에는 아직 인스턴스를 생성하기 이전이므로 생성자 함수가 생성할 인스턴스를 가리키는 식별자를 알 수 없다. 따라서 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 특수한 식별자가 필요하다. 이를 위해 자바스크립트는 this라는 특수한 식별자를 제공한다. this는 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수다. this를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조할 수 있다. this는 자바스크립트 엔진에 의해 암묵적으로 생성되며, 코드 어디서든 참조할 수 있다. 함수를 호출하면 arguments 객체와 this가 암묵적으로.. 이전 1 2 3 4 5 6 다음