FrontEnd

    [JS] DeepDive(30) Date

    표준 빌트인 객체인 Date는 날짜와 시간을 위한 메서드를 제공하는 빌트인 객체이면서 생성자 함수이다. Date는 생성자 함수로 Date 객체는 내부적으로 날짜와 시간을 나타내는 정수값을 가진다. 해당 값은 1970년 1월 1일 00:00:00(UTC)를 기점으로 Date 객체가 나타내는 날짜와 시간까지의 밀리초를 나타낸다. Date 생성자 함수로 객체를 생성하는 방법은 4가지가 있다. 1. new Date() 현재 날짜와 시간을 가지는 Date객체를 반환한다. 2. new Date(milliseconds) 1970년 1월 1일을 기점으로 인수로 전달된 밀리초만큼 경과한 날짜와 시간을 나타내는 Date객체 반환 // 한국 표준시 KST는 협정 세계시 UTC에 9시간을 더한 시간이다. new Date(0)..

    [JS] DeepDive(29) Math

    표준 빌트인 객체인 Math는 수학적인 상수와 함수를 위한 프로퍼티와 메서드를 제공한다. Math.PI 원주율 PI 값을 반환한다. Math.PI; // -> 3.141592653589793 Math.abs 인수로 전달된 숫자의 절대값을 반환하며 절대값은 0 또는 양수여야 한다. Math.abs(-1); // -> 1 Math.abs('-1'); // -> 1 Math.abs(''); // -> 0 Math.abs([]); // -> 0 Math.abs(null); // -> 0 Math.abs(undefined); // -> NaN Math.abs({}); // -> NaN Math.abs('string'); // -> NaN Math.abs(); // -> NaN Math.round 인수로 전달된 숫..

    [JS] DeepDive(28) Number

    표준빌트인 객체인 Number는 원시 타입인 숫자를 다룰 때 유용한 프로퍼티와 메서드를 제공한다. new 연산자와 함께 Number 인스턴스를 생성할 수 있다. const numObj = new Number(); console.log(numObj); // Number {[[PrimitiveValue]]: 0} Number.EPSILON ES6에서 도입된 Number.EPSILON은 1과 1보다 큰 숫자 중에서 가장 작은 숫자와의 차이와 같다. Number.EPSILON은 약 2.22044604925031308084726633361816 * 10^-16 이다. 따라서 부동 소수점 산술연산은 정확한 결과를 기대하기 어렵고 무한소수를 계산하는 경우 미세한 오차가 발생할 수 밖에 없다. 0.1 + 0.2; //..

    [JS] DeepDive(27) 배열

    배열은 여러 개의 값을 순차적으로 나열한 자료구조이다. 배열 리터럴을 통해서 배열을 만들 수 있으며 배열이 가진 값을 요소라고 한다. const arr = ['apple', 'banana', 'orange']; 배열의 길이는 length 프로퍼티로 접근할 수 있다. arr.length // -> 3 JS에서 배열이란 타입은 존재하지 않으며 배열은 사실 객체타입이다. 일반객체와는 다르게 값의 순서와 length프로퍼티가 있다는 특징이 있다. const arr = [1, 2, 3]; // 반복문으로 자료 구조를 순서대로 순회하기 위해서는 자료 구조의 요소에 순서대로 // 접근할 수 있어야 하며 자료 구조의 길이를 알 수 있어야 한다. for (let i = 0; i < arr.length; i++) { co..

    [JS] DeepDive(26) ES6함수의 추가기능

    ES6 이전까지의 JS 함수는 별다른 구분없이 다양한 목적으로 사용되었다. 일반적인 함수 , 생성자 함수 , 객체의 메서드 등등 여러가지로 사용이 가능한 점은 분명 편리하기도 하지만 실수를 유발시킬 수 있으며 성능적으로도 손해였다. var foo = function () { return 1; }; // 일반적인 함수로서 호출 foo(); // -> 1 // 생성자 함수로서 호출 new foo(); // -> foo {} // 메서드로서 호출 var obj = { foo: foo }; obj.foo(); // -> 1 아래 예제를 보자. // 프로퍼티 f에 바인딩된 함수는 callable이며 constructor다. var obj = { x: 10, f: function () { return this.x;..

    [JS] DeepDive(25) 클래스 - 1

    JS는 프로토타입 기반 객체지향 언어이다. 타 객체지향 언어와의 차이점이 있긴 하지만 JS가 강력한 객체지향 프로그래밍 능력을 가진것은 맞다. 특히 JS는 프로토타입 기반 객체지향언어로 클래스가 필요 없는 객체지향 프로그래밍 언어이다. // ES5 생성자 함수 var Person = (function () { // 생성자 함수 function Person(name) { this.name = name; } // 프로토타입 메서드 Person.prototype.sayHi = function () { console.log('Hi! My name is ' + this.name); }; // 생성자 함수 반환 return Person; }()); // 인스턴스 생성 var me = new Person('Lee')..