본문 바로가기

분류 전체보기

(72)
[모던 JS] CH24. 클로저 (#12) CH24. 클로저 클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. 24.1 렉시컬 스코프 렉시컬 스코프(정적 스코프)? → 자바 스크립트 엔진은 함수를 어디서 호출했는지가 아니라 함수를 어디에 정의했는지에 따라 상위 스코프를 결정 → 렉시컬 환경의 "외부 렉시컬 환경에 대한 참조"에 저장할 참조값, 즉 상위 스코프에 대한 참조는 함수 정의가 평가되는 시점에 함수가 정의된 환경(위치)에 의해 결정 24.2 함수 객체의 내부 슬롯 - 함수는 자신의 내부 슬롯 [[Environment]]에 자신이 정의된 환경, 즉 상위 스코프의 참조를 저장함 - 함수 객체의 내부 슬롯에 저장된 현재 실행중인 실행 컨텍스트의 렉시컬 환경의 참조가 바로 상위 스코프 - 자신이 호출되었을 때 생성될 함수 렉시컬 환경의..
[코드] 2 1. 포켓몬 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(nums) { const maxNums = Array.from(new Set(nums)) return Math.min(nums.length / 2, maxNums.length); } 2. 모의고사 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(answers) { let answer =..
[모던 JS] CH 20. strict mode, CH 21. 빌트인 객체, CH22. this CH 20. strict mode 20.1 strict mode란? - 개발자의 의도와 상관없이 발생한 암묵적 전역은 오류를 발생시키는 원인이 될 가능성이 큼 - strict mode(엄격 모드)는 자바스크립트 언어의 문법을 좀 더 엄격히 적용하여 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 대해 명시적인 에러를 발생시킴 20.2 strict mode 의 적용 - 전역의 선두 또는 함수 몸체의 선두에 'use strict';를 추가함 'use strict'; function foo() { x = 10; // ReferenceError } foo(); 20.3 전역에 strict mode를 적용하는 것은 피하자 - 전역에 적용한 strict mode는 스..
[모던 JS] CH19 프로토타입 CH19. 프로토타입 19.1 객체지향 프로그래밍 - 속성을 통해 여러 개의 값을 하나의 단위로 구성한 복합적인 자료구조를 객체라고 함 - 객체지향 프로그래밍은 객체의 상태를 나타내는 데이터와 상태 데이터를 조작할 수 있는 동작을 하나의 논리적인 단위로 묶어 생각함 - 객체의 상태 데이터를 프로퍼티, 동작을 메서드라고 함 19.2 상속과 프로토타입 - 자바스크립트는 프로토타입을 기반으로 상속을 구현하여 불필요한 중복을 제거함 - 중복을 제거하는 방법? 기존의 코드를 적극적으로 재사용하는 것 -> 상속 // 생성자 함수 function Circle(radius) P this.radius = radius; } Circle.prototype.getArea = function() { return Math.PI ..
[모던 JS] CH18 함수와 일급객체 CH18. 함수와 일급 객체 18.1 일급객체 >> 일급 객체의 조건 1. 무명의 리터럴로 생성할 수 있음 (런타임에 생성 가능) 2. 변수나 자료구조 (객체, 배열 등)에 저장 가능 3. 함수의 매개변수에 전달 가능 4. 함수의 반환값으로 사용가능 - 함수가 일급 객체라는 것은 함수를 객체와 동일하게 사용할 수 있다는 의미 - 객체는 값이므로 함수는 값과 동일하게 취급할 수 있음 - 자바스크립의 함수는 일급객체 18.2 함수 객체의 프로퍼티 - 함수는 객체이므로 프로퍼티를 가질 수 있음 - arguments, caller, length, name, prototype 프로퍼티는 모두 함수 객체의 데이터 프로퍼티 - __proto__는 접근자 프로퍼티, 함수 객체 고유의 프로퍼티가 아니라 Object.pr..
[모던 JS] CH16 프로퍼티 어트리뷰트, CH17 생성자 함수에 의한 객체 생성 CH 16. 프로퍼티 어트리뷰트 16.1 내부 슬롯과 내부 메서드 - 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 사용하는 의사 프로퍼티와 의사 메서드 - 이중 대괄호로 감싼 이름들이 내부 슬롯과 내부 메서드 - 자바스크립트 엔진에서 실제로 동작하지만, 개발자가 접근할 수 있도록 외부로 공개된 객체의 프로퍼티는 아님 : 따라서, 일부 내부 슬롯과 내부 메서드에 한하여 간접적으로 접근할 수 있는 수단을 제공함 ex) 모든 객체는 [[Prototype]]이라는 내부 슬롯을 가짐 -> 원칙적으로 접근 불가 -> __proto__를 통해 간접적으로 접근 가능 const o = {}; o.[[Prototype]] // Uncaught SyntaxError o.__proto__ // Object.prototy..
[모던 JS] CH14 전역 변수의 문제점, CH15 let, const 키워드와 블록 레벨 스코프 CH 14. 전역 변수의 문제점 14.1 변수의 생명 주기 - 전역 변수의 무분별한 사용은 위험 14.1.1 지역 변수의 생명 주기 - 변수는 자신이 선언된 위치에서 생성되고 소멸함 - 함수 내부에서 선언된 지역 변수는 함수가 호출되면 생성되고 함수가 종료하면 소멸함 - 지역 변수의 생명 주기는 함수의 생명 주기와 일치함 - 호이스팅은 스코프를 단위로 동작함 - 호이스팅은 변수 선언이 스코프의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징을 말함 14.1.2 전역 변수의 생명 주기 - 전역 코드는 명시적인 호출 없이 실행됨 - var 키워드로 선언한 전역 변수는 전역 객체의 프로퍼티가 됨 - 전역 변수의 생명 주기는 전역 객체의 생명 주기와 일치함 - var 키워드로 선언한 전역 변수의 생..
[모던 JS] CH23 실행컨텍스트, CH13 스코프 CH23. 실행컨텍스트 23.1 소스코드의 타입 23.2 소스코드의 평가와 실행 - 소스 평가 과정에서는 실행 컨텍스트를 생성하고 변수, 함수 등의 선언문만 먼저 실행하여 생성된 변수나 함수 식별자를 키로 실행 컨텍스트가 관리하는 스코프에 등록함 23.3 실행 컨텍스트의 역할 1. 전역 코드 평가 - 전역 코드 실행하기 앞서 전역 코드 평가 과정을 거침 - 소스코드 평가 과정에서는 선언문만 먼저 실행됨 - var 키워드로 선언된 전역 변수와 함수 선언문으로 정의된 전역 함수는 전역 객체의 프로퍼티와 메서드가 됨 2. 전역 코드 실행 - 런타임이 시작되어 전역 코드가 순차적으로 실행되기 시작함 - 전역 변수에 값이 할당되고 함수가 호출됨 3. 함수 코드 평가 - 함수 호출에 의해 코드 실행 순서가 변경되어..