일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 채권
- algorithmTest
- algorithmtraining
- 알고리즘공부
- 독서
- 책을알려주는남자
- 알고리즘 공부
- 알고리즘트레이닝
- 돈
- 화장품
- 백준알고리즘
- algorithmStudy
- 성분
- 독후감
- 자바
- 다독
- C++
- 프로그래머스 알고리즘 공부
- 주식
- 책알남
- 프로그래밍언어
- JavaScript
- 지혜를가진흑곰
- 경제
- Java
- C
- 서평
- 투자
- 재테크
- 자바스크립트
- Today
- Total
목록[Snow-ball]프로그래밍(컴퓨터)/자바스크립트(JavaScript) (39)
탁월함은 어떻게 나오는가?
클로저는 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어(에: 하스켈, 리스프, 얼랭, 스칼라 등)에서 사용되는 중요한 특성이다. 그렇기 때문에 클로저의 정의는 ECMAScript에 없다. MDN 클로저 정의 A closure is the combination of a function and the lexical environment within which that function wasdeclared. 클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 const x = 1; function outerFunc() { const x = 10; function innerFunc() { console.log(x); // 10 } innerFu..
소스코드의 타입 ECMAScript 사양은 소스코드(ECMAScript code)를 4가지 타입으로 구분한다. 1. 전역 코드 전역 코드는 전역 변수를 관리하기 위해 최상위 스코프인 전역 스코프를 생성해야 한다. 그리고 var 키워드로 선언된 전역 변수와 함수 선언문으로 정의된 전역 함수를 전역 객체의 프로퍼티와 메서드로 바인딩하고 참조하기 위해 전역 객체와 연결되어야 한다. 이를 위해 전역 코드가 평가되면 전역 실행 컨텍스트가 생성된다. 2. 함수 코드 함수 코드는 지역 스코프를 생성하고 지역 변수, 매개변수, arguments 객체를 관리해야 한다. 그리고 생성한 지역 스코프를 전역 스코프에서 시작하는 스코프 체인의 일원으로 연결해야 한다. 이를 위해 함수 코드가 평가되면 함수 실행 컨텍스트가 생성된..
객체지향 프로그래밍에서 객체는 상태(state)를 나타내는 프로퍼티와 동작(behavior)을 나타내는 메서드를 하나의 논리적인 단위로 묶은 복잡적인 자료구조다. 정리하면, 객체 = 상태 + 동작 표현 가능하다. 동작을 나타내는 메서드는 프로퍼티를 참조하고 변경할 수 있다. 이때 메서드가 자신이 속한 객체의 프로퍼티를 참조하려면 먼저 자신이 속한 객체를 가리키는 식별자를 참조할 수 있어야 한다. 객체 리터럴 방식으로 생성한 객체의 경우 메서드 내부에서 메서드 자신이 속한 객체를 가리키는 식별자를 재귀적으로 참조할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 const circle = { // 프로퍼티: 객체 고유의 상태 데이터 radius: 5, // 메서드: 상태 데이터를 참조하고 ..
자바스크립트 객체의 분류 3개의 자바스크립트 객체 1) 표준 빌트인 객체(standard built-in objects/native objects/global objects) 표준 빌트인 객체는 ECMAScript 사양에 정의된 객체를 말하며, 애플리케이션 전역의 공통 기능을 제공한다. 표준 빌트인 객체는 ECMAScript 사양에 정의된 객체이므로 자바스크립트 실행 환경(브라우저 또는 Node.js 환경)과 관계없이 언제나 사용할 수 있다. 표준 빌트인 객체는 전역 객체의 프로퍼티로서 제공된다. 따라서 별도의 선언 없이 전역 변수처럼 언제나 참조할 수 있다. 2) 호스트 객체(host objects) 호스트 객체는 ECMAScript 사양에 정의되어 있지 않지만 자바스크립트 실행 환경(브라우저 환경 또..
strict mode란? 1 2 3 4 5 6 function foo() { x = 10; } foo(); console.log(x); // 10 cs 자바스크립트 엔진은 먼저 foo 함수의 스코프에서 x 변수의 선언을 검색한다. foo 함수의 스코프에는 x 변수의 선언이 없으므로 검색에 실패할 것이고, 자바스크립트 엔진은 x 변수를 검색하기 위해 foo 함수 컨텍스트의 상위 스코프(위 예제의 경우 전역 스코프)에서 x 변수의 선언을 검색한다. 전역 스코프에도 x 변수의 선언이 존재하지 않기 때문에 ReferenceError를 발생시킬 것 같지만 자바스크립트 엔진은 암묵적으로 전역 객체에 x 프로퍼티를 동적 생성한다. 이때 전역 객체의 x 프로퍼티는 마치 전역 변수처럼 사용할 수 있다. 이러한 현상을 암..
자바스크립트는 명령형(imperative), 함수형(functional), 프로토타입 기반(prototype-based) 객체지향 프로그래밍(OOP: Object Oriented Programming)을 지원하는 멀티 패러다임 프로그래밍 언어다. 자바스크립트는 public, private, pretected 등이 없어서 객체지향 프로그래밍 언어가 아니라고 오해하지만, 클래스 기반 객체지향 프로그래밍 언어보다 효율적이며 더 강력한 객체지향 프로그래밍 능력을 지니고 있는 프로토타입 기반의 객체지향 프로그래밍 언어다. 클래스 자바스크립트 클래스는 ES6부터 도입되었다. 하지만 ES6의 클래스가 기존의 프로토타입 기반 객체지향 모델을 폐지하고 새로운 객체지향 모델을 제공하는 것은 아니다. 클래스도 함수이며, 기..
Object 생성자 함수 생성자 함수(constructor)란 new 연산자와 함께 호출하여 객체(인스턴스)를 생성하는 함수를 말한다. 생성자 함수에 의해 생성된 객체를 인스턴스(instance)라 한다. 자바스크립트는 Object 생성자 함수이외에도 String, Number, Boolean, Fucntion, Array, Date, RegExp, Promise 등의 빌트인(built-in)생성자 함수를 제공한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 // String 생성자 함수에 의한 String 객체 생성 const strObj = new String('Lee'); co..
프로퍼티 어트리뷰트에는 내부 슬롯(internal slot)과 내부 메서드(internal method)가 존재한다. 내부 슬롯과 내부 메서드는 자바스크립트 엔진에서 실제로 동작하지만 개발자가 직접 접근할 수 있도록 외부로 공개된 객체의 프로퍼티는 아니다. 즉, 일부 내부 슬롯과 내부 메서드르 제외하고는 직접적으로 접근하거나 호출할 수 있는 방법은 제공하지 않는다. 자바스크립트 모든 객체는 [[Prototype]]이라는 내부 슬롯을 갖는다. 객체안에 [[Prototype]]이 존재하면 접근할 수 있을것 같지만 접근 불가능하다. 단, __proto__ 통해서 간접적으로 접근할 수 있다. 1 2 3 4 5 6 const obj = {}; // 내부 슬롯은 자바스크립트 엔진의 내부 로직이므로 직접 접근할 수 ..