CODESU
article thumbnail
strict mode
Language/Javascript 2023. 9. 4. 19:35

strict mode란? function foo() { x = 10; } foo(); console.log(x); // ? foo함수 내에서 선언하지 않은 x 변수에 값을 할당했을때, 변수 x를 찾아야 x에 값을 할당할 수 있기때문에 자바스크립트 엔진은 x 변수가 어디에서 선언되었는지 스코프 체인을 통해 검색하기 시작한다. 먼저 foo함수 내에서 검색하는데 함수내에는 x 변수의 선언이 없으므로 검색에 실패할 것이고, 상위 스코프에서 x변수의 선언을 검색할 것이다. 어디에도 x 변수의 선언이 없으면 ReferenceError를 발생시킬 것 같지만 자바스크립트 엔진은 암묵적으로 전역 객체에 x 프로퍼티를 동적 생성한다. 이때 전역 객체의 x 프로퍼티는 마치 전역 변수처럼 사용할 수 있다. 이러한 현상을 암묵..

article thumbnail
함수와 일급객체
Language/Javascript 2023. 8. 21. 20:29

일급객체 무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다. 변수나 자료구조 ( 객체, 배열 등) 에 저장할 수 있다. 함수의 매개변수에 전달할 수 있다. 함수의 반환값으로 사용할 수 있다. 👆🏻 위 조건을 만족하는 객체를 일급 객체라 한다. // 자바스크립트의 함수는 위의 조건을 모두 만족하므로 일급 객체다. // 1. 함수는 무명의 리터럴로 생성할 수 있다. // 2. 함수는 변수에 저장할 수 있다. // 런타임(할당단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다. const increase = function (num) { return ++num; }; const decrease = function (num) { return --num; }; // 2. 함수는 객..

article thumbnail
객체 리터럴
Language/Javascript 2023. 7. 20. 23:03

객체 자바스크립트는 객체기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 "모든 것"이 객체다. 원시 값을 제외한 나머지 값( 함수, 배열, 정규 표현식 등 )은 모두 객체다. 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키와 값으로 구성된다. 👆🏻 자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다. 따라서, 함수도 프로퍼티 값으로 사용할 수 있다. 프로퍼티 값이 함수일 경우, 일반 함수와 구분하기 위해 메서드라 부른다. 객체는 프로퍼티와 메서드로 구성된 집합체다. 프로퍼티 : 객체의 상태를 나타내는 값 메서드 : 프로퍼티를 참조하고 조작할 수 있는 동작 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임을 객체지향 프로그래밍이라 한다. 객체 리터럴에 의한 ..

article thumbnail
프로퍼티 어트리뷰트 (Property Attribute)
Language/Javascript 2023. 7. 13. 13:12

내부 슬롯과 내부 메서드 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티와 의사 메서드다. ECMAScript 사양에 등장하는 이중 대괄호 ( [[...]] )로 감싼 이름들이 내부 슬롯과 내부 메서드다. 예를 들어, 모든 객체는 [[Prototype]]이라는 내부 슬롯을 갖는다. 내부 슬롯은 자바스크립트 엔진의 내부 로직이므로 원칙적으로 직접 접근할 수 없지만 [[Prototype]] 내부 슬롯의 경우, __proto__를 통해 간접적으로 접근할 수 있다. const o = {}; // 내부 슬롯은 자바스크립트 엔진의 내부 로직이므로 직접 접근할 수 없다. o.[[Prototype]] // -> Uncaught Syntax..

article thumbnail
Set객체
Language/Javascript 2023. 7. 11. 12:40

Set 객체 Set 객체는 중복되지 않는 유일한 값들의 집합이다. Set 객체는 배열과 유사하지만 다음과 같은 차이가 있다. 구분 배열 Set 객체 동일한 값을 중복하여 포함할 수 있다. O X 요서 순서에 의미가 있다. O X 인덱스로 요소에 접근할 수 있다. O X Set 객체의 특성은 수학적 집합의 특성과 일치하며, Set은 수학적 집합을 구현하기 위한 자료구조다. 따라서 Set을 통해 교집합, 합집합, 차집합, 여집합 등을 구현할 수 있다. Set 객체의 생성 Set 객체는 Set 생성자 함수로 생성한다. const set = new Set(); console.log(set); // Set(0) {} Set 생성자 함수는 이터러블을 인수로 전달받아 Set 객체를 생성하는데 이터러블의 중복된 값은 ..

article thumbnail
Map객체
Language/Javascript 2023. 7. 6. 11:32

Map 객체 Map객체는 키와 값의 쌍으로 이루어진 컬렉션이다. ( Set과 함께 es6에서 새로도입한 자료구조 ) 한 Map에서의 키는 오직 단 하나만 존재 한다. 객체와 유사하지만 다음과 같은 차이가 있다. 구분 객체 Map 객체 키로 사용할 수 있는 값 문자열 또는 심벌 값 객체를 포함한 모든 값 이터러블 X O 요소 개수 확인 Object.keys(obj).length map.size 성능 키-값 쌍의 빈번한 추가 및 제거에 최적화되지 않았다. 키-값 쌍의 빈번한 추가 및 제거와 관련된 상황에서는 성능이 좀 더 좋다. → 객체와 Map객체에 대한 더 자세한 비교는 MDN공식문서에 표로 정리되어 있다. Map 객체의 생성 Map 객체는 Map 생성자 함수로 생성한다. // 인수를 전달하지 않으면 빈..