목록2021/05 (15)
Jiyong's STUDY
https://velog.io/@woobuntu/실행-컨텍스트렉시컬-환경과-this 실행 컨텍스트(렉시컬 환경과 this) ES3의 '중첩 스코프'와 비교하여 ES5의 '렉시컬 환경'개념에 대해 알아보고, 나아가 this바인딩에 대해서도 살펴본다. velog.io 해당 글은 위 링크를 보고 공부하고 이해한 내용을 정리한 글입니다. 그리고 해당 글의 예제들이 ES 문법으로 작성되지는 않았지만 해당 글에서는 ES6+ 문법에서의 컨텍스트도 다루겠습니다. 틀린 부분이 많을 수 있으니 지적해주시면 감사하겠습니다. 실행 컨텍스트: { 렉시컬 환경 컴포넌트: { 렉시컬 환경: { 환경 레코드: { 선언적 환경 레코드: { // 글로벌 스코프에서는 오브젝트 환경 레코드 // 현재 스코프에 선언된 변수와 함수들이 식별되..
기본적으로, 자바스크립트의 함수는 객체이다. 이 부분은 다 알 것이라 생각한다. 1. 일급 함수 그리고 일급 객체이자 일급 함수이다. 여기서 '일급' 이라는 형용사는 값으로 다룰 수 있음을 나타낸다. 즉 '일급'의 조건은 - 변수에 담을 수 있다. - 함수나 메서드의 인자로 넘길 수 있다. - 함수나 메서드에서 리턴할 수 있다. 또한 자바스크립트에서 모든 값은 일급이다. 자바스크립트의 객체도 모두 일급 객체다. 그럼 일급 함수는 무엇인가? 추가적인 조건이 있다. - 아무 때나(런타임에서도) 선언이 가능하다. - 익명으로 선언할 수 있다. - 익명으로 선언한 함수도 함수나 메서드의 인자로 넘길 수 있다. 자바스크립트의 함수는 위 조건을 모두 만족한다. 이제 '자바스크립트에서' 라는 전치사는 생략하겠다. 함..
const not = v => !v; const beq = a => b => a===b; not은 정말 딱 not 연산만 해준다. beq는 갈라져서 a===b 연산만 한다. 이건 또 왜 쓰는걸까? _.some = list => !!_.find(list, _.identity); _.every = list => beq(-1)(_.findIndex(list, not)); console.log(_.some([0, null, 2])); // true console.log(_.every([0, null, 2])); // false 여기서 _.findIndex는? const findIndex = (list, predicate) => { for (let i = 0, len = list.length; i < len; ..
const identity = v => v; _.identity는 underscore.js에 존재하는 함수인데, 받은걸 그냥 그대로 리턴한다. 이걸 왜 써야하는지도 의문이고 언제 써야 하는지도 의문이다. 하지만 예시가 있는데, Boolean을 평가할 때 유용하게 쓸 수 있다. _.filter([true, 0, 10, 'a', false, null], _.identity); // [true, 10, 'a'] 리스트에서 true로 평가되는 값만 남긴다. 다른 예시로는 _.some = list => !!_.find(list, _.identity); _.every = list => _.filter(list , _.identity).length == list.length; console.log(_.some([0,..