기본형 : number, string, boolean, null, undefined , Symbol참조형 : Object, Array, function, Date, RegExp기본형은 불변성, 참조형은 가변성을 띈다.불변성 가변성변수 영역 : 변수와 상수를 구분 짓는
얕은복사 : 바로 아래 단계의 값만 복사 깊은복사 : 내부의 모든 값들을 하나하나 찾아서 전부 복사 (객체안의 객체내용마저 전부 하나하나 복사한다)중첩된 객체에 대해서 아래 단계의 복사만 이뤄질 경우 해당 아래의 프로퍼티 변경에서 다른 객체와 서로 영향을 받는다. (불
실행할 코드에 제공할 환경 정보들을 모아놓은 객체구성요소1\. 전역공간2\. eval()함수3\. 함수 (흔히 함수를 실행)처음 이 내용을 보며 inner함수의 console.log결과가 왜 undefined인지 이해를 못했다. 분명 전역변수의 a가 가진 1의 값을
실행할 코드에 제공할 환경 정보들을 모아놓은 객체 ex) 전역컨텍스트, eval()함수 , 함수 등VariableEnvironment : 최초 실행 시의 스냅 샷을 유지LexicalEnvironment : VariableEnvironment 을 복사 해 만들어져, 이후
전역공간에서의 this는 전역객체를 의미주의 : var의 경우는 전역객체의 프로퍼티이나 let , const 는 전역객체의 프로퍼티가 아니다.함수 : 그 자체로 독립적인 기능 수행메소드 : 자신이 호출한 대상 객체에 관한 동작을 수행구분 방법 : 함수 앞에 점(.)이
공통된 성질을 지니는 객체들을 생성하는데 사용하는 함수사용법new 명령어와 함께 함수를 호출하면 해당 함수가 생성자로서 동작구분 방법 : Array.isArray('대상')유사배열의 특징 : 배열의 메서드를 쓸 수 없다.call 메소드apply 메소드bind 메소드어
즉시 호출하지는 않고 넘겨 받은 this 및 인수들을 바탕으로 새로운 함수를 반환하기만 하는 메서드목적 1\. this를 미리 적용하는 것2\. 부분 적용 함수를 구현하는 것ex)만약, call/apply의 경우는 아래와 같다. ( 새로운 함수를 반환하지않고 바로 실행
콜백함수 >다른 코드(ex. map)의 인자로 넘겨주는 함수 ex) >Array.prototype.map(callback, thisArg) callback : function(currentValue, index, array) 콜백함수에서의 this >콜백 함수에 별
기본틀시작 내용 1\. new Promise함수형태then이후 형태함수 내부에서 실질적인 비동기 작업이 필요한 위치마자 await 표기실제 위의 내용을 함수로 표현해서 정리해보면 아래와 같다.비동기와 관련된 부분들에 await을 포함시키고 이를 포함하는 함수는 asyn
기본적으로 스코프를 알아야 클로저를 이해할수 있다고 생각한다.식별자에 대한 유효범위'식별자에 대한 유효범위'를 안에서부터 바깥으로 차례로 검색해 나가는 것ex)A함수 내부에 B함수B함수 내부에 C함수함수 C의 (LexicalEnvironment에 있는) outerEn
return에 의해서setInterval/setTimeouteventListener함수 참조를 끊음식별자 = null 형태로 한다.콜백함수 내부에서 외부 데이터를 사용하고자 할때접근 권한 제어(정보 은닉)
짧은 시간 동안 동일한 이벤트가 많이 발생할 경우 이를 전부 처리하지않고 처음 또는 마지막에 발생한 이벤트에 대해 한 번만 처리디바운스여러개의 인자를 받는 함수를 하나의 인자만 받는 함수로 나눠서 순차적으로 호출ex) HTML5의 fetch 함수의 url에 공통적인 요
constructor : 생성자 함수prototype instance : 생성자 함수가 new 연산자를 통해 만들어진 인스턴스new 연산자로 Constructor를 호출하면 instance가 만들어지고 이 instance의 생략 가능한 프로퍼티인 \_\_proto\_\
console.dir(Array)를 입력하면이러한 결과를 볼 수 있다. 이를 통해 Array 생성자 함수에는 from() , isArray() of() ...등의 메소드가 존재하고 prototype을 통해 여러 push,pop,forEach등의 메소드를 가지고 있는
원본을 제거하고 다른 대상으로 교체하는 것이 아니라 원본이 그대로 있는 상태에서 다른 대상을 그 위에 얹는다.ex)iu를 기준으로 가장 가까운 대상인 자신의 프로퍼티(iu.getName)을 검색하고 없다면 그 가까운대상인 \_\_proto\_\_를 검색하므로 Perso
ex)음식 => 고기 ,채소, 과일 (추상적인 개념)과일 => 배, 사과,바나나(구체적이고 실존하는 사물)superClass : 음식subClass : 과일하위 개념은 상위개념을 포함하면서 더 구체적인 개념이 추가됩니다. 어떤 클래스의 속성을 지니는 실존하는 개체스태틱
ES5의 생성자함수 => ES6의 class내에서 constructorES5의 메서드 => ES6의 static 메서드ES5의 prototype.메서드 => ES6의 프로토타입 메서드에서를 실행하면 결과는 size is: 100이 나온다. 이전 내용에서처럼 class
undefined == null //trueundefined === null //falseVariableEnvironment : 최초 실행 시의 스냅 샷을 유지LexicalEnvironment : VariableEnvironment 을 복사 해 만들어져, 이후 주로 활
(그 내부함수는 자신의 있었던 기억(=실행컨텍스트내용)을 가지고있다.)(외부함수 outer에서 정의된 변수 a를 참조하는 내부함수 inner에서 발생하는 현상)=> 과거에 내부함수가 가지고 있는 실행컨텍스트의 스코프체인과 관련된 스코프범위의 내용을 GC되지않고 기억하고