분류 전체보기61 28. Number Number 생성자 함수 표준 빌트인 객체인 Number 객체는 생성자 함수 객체다. 따라서 new 연산자와 함께 호출하여 Number 인스턴스를 생성할 수 있다. Number 생성자 함수에 인수에 숫자를 전달하면서 new 연산자와 함께 호출하면 [[NumberData]] 내부 슬롯에 인수로 전달받은 숫자를 할당한 Number 래퍼 객체를 생성한다. 인수를 전달하지 않으면 기본값으로 0이 설정되고, 인수가 숫자가 아니면 숫자로 강제 변환 후 할당한다. 이때 숫자로 변환할 수 없다면 NaN을 할당한다. new 연산자를 사용하지 않고 생성자 함수를 호출하면 Number 인스턴스가 아닌 숫자를 반환한다. 이를 이용하여 명시적으로 타입을 변환하기도 한다. 표준 빌트인 객체인 Number 객체는 다양한 프로퍼티와.. 2022. 7. 27. 27. 배열 배열 배열은 여러 개의 값을 순차적으로 나열한 자료구조다. 배열이 가지고 있는 값을 요소라고 한다. 자바스크립트의 모든 값은 배열의 요소가 될 수 있다. 즉, 원시값은 물론 객체, 함수, 배열 등 모든 값이 배열의 요소가 될 수 있다. 배열의 요소는 배열에서 자신의 위치를 나타내는 0 이상의 정수인 인덱스를 갖는다. 인덱스는 배열의 요소에 접근할 때 사용한다. 대부분의 프로그래밍 언어에서 인덱스는 0부터 시작한다. 요소에 접근할 때는 대괄호 표기법을 사용한다. 대괄호 내에는 접근하고 싶은 요소의 인덱스를 지정한다. 배열은 요소의 개수, 즉 배열의 길이를 나타내는 length 프로퍼티를 갖는다. 배열은 인덱스와 length 프로퍼티를 갖기 때문에 for 문을 통해 순차적으로 요소에 접근할 수 있다. 자바스.. 2022. 7. 26. 26. ES6 함수의 추가 기능 함수의 구분 자바스크립트의 함수는 별다른 형식의 구분이 없었다. 일반적인 함수로 호출할 수도 있고, new 연산자와 함께 호출하여 생성자 함수로 호출할 수도 있으며, 객체에 바인딩되어 메서드로서 호출할 수도 있다. ES6 이전의 모든 함수는 callable이면서 constructor다. 이는 유연하지만 실수를 유발할 수 있으며 성능 면에서도 손해다. 생성자 함수로 쓰이지 않는 메서드, 콜백 함수는 constructor와 prototype 객체를 소유할 필요가 없으며, 생성자 함수는 일반함수로 호출되면 의도대로 동작하지 않는다. ES6 이전의 모든 함수는 사용 목적에 따라 명확한 구분이 없으므로 호출 방식에 특별한 제약이 없고 생성자 함수로 호출되지 않아도 프로토타입 객체를 생성한다. 이러한 문제를 해결하.. 2022. 7. 25. 25. 클래스 클래스와 프로토타입 객체 생성 방식의 차이 자바스크립트는 프로토타입 기반 객체지향 언어다. 프로토타입 기반 객체지향 언어는 클래스가 필요 없는 객체지향 프로그래밍 언어다. 자바스크립트에서는 생성자 함수와 프로토타입을 통해 객체지향의 상속을 구현할 수 있다. (생성자 함수의 몸체에서 생성될 인스턴스의 프로퍼티를, 생성자 함수의 프로토타입 객체를 통해 인스턴스가 공유할(상속받을) 프로퍼티를 정의할 수 있다.) 하지만 클래스 기반 언어에 익숙한 프로그래머들은 프로토타입 기반 프로그래밍 방식에 혼란을 느낄 수 있으며, 자바스크립트를 어렵게 느끼게 하는 하나의 장벽처럼 인식되었다. 따라서 ES6에서 클래스라는 클래스 기반 객체지향 프로그래밍 방식과 유사한 객체 생성 매커니즘을 도입했다. 클래스는 기존의 프로토타입.. 2022. 7. 24. 24. 클로저 MDN에 기록된 클로저의 정의를 보면 클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이라고 한다. 여기서 렉시컬 환경이란 함수 실행 컨텍스트의 구성 요소인 렉시컬 환경을 의미하고, 함수의 식별자와 스코프를 관리하는 영역이다. 함수가 선언된 렉시컬 환경이란 함수의 외부 함수의 스코프를 의미한다. 위와 같은 정의가 나오게 된 이유는 자바스크립트는 함수를 어디서 호출했는지가 아니라 함수를 어디에 정의했는지에 따라 상위 스코프를 결정하는 렉시컬 스코프(정적 스코프)를 따르기 때문이다. 클로저는 중첩 함수가 상위 스코프와 맺는 관계와 관련이 있다. 렉시컬 스코프란 렉시컬 환경의 '외부 렉시컬 환경에 대한 참조'에 저장할 참조값, 즉 상위 스코프에 대한 참조는 함수 정의가 평가되는 시점에 함수가 정의된 환경.. 2022. 7. 20. 23. 실행 컨텍스트 실행 컨텍스트는 소스 코드의 평가와 실행에 관련된 동작을 아우르는 개념이다. 실행 컨텍스트를 통해 전역 코드와 함수 코드 등 모든 소스 코드의 스코프, 동작 순서, 비동기 처리 등이 관리된다. 소스코드의 타입 자바스크립트는 소스코드를 4가지 타입으로 구분한다. 4가지 타입의 소스코드는 실행 컨텍스트를 생성한다. 소스코드의 타입 설명 실행 컨텍스트 생성 과정 전역 코드 전역에 존재하는 소스코드를 말한다. 전역에 정의된 함수, 클래스 등의 내부 코드는 포함되지 않는다. 전역 변수를 관리하기 위해 최상위 스코프인 전역 스코프를 생성해야 한다. 전역 객체와 연결된다. 전역 코드가 평가되면 전역 실행 컨텍스트가 생성된다. 함수 코드 함수 내부에 존재하는 소스코드를 말한다. 함수 내부에 중첩된 함수, 클래스 등의 .. 2022. 7. 19. 이전 1 ··· 3 4 5 6 7 8 9 ··· 11 다음