목록My footPrints 🔥🔥🔥 (311)
Daehyunii's Dev-blog
실행 컨텍스트는 자바스크립트의 동작 원리를 담고 있는 핵심 개념이다. 이 개념을 명확하게 이해하면 자바스크립트가 스코프 기반으로 식별자와 식별자에 바인딩된 값을 관리하는 방식과 호이스팅이 발생하는 이유, 클로저의 동작 방식등을 이해할 수 있다. 23.1 소스코드의 타입 우선 실행 컨텍스트를 이해하기 위해서는 소스코드의 타입을 알 필요가 있다. ECMAscirpt 사양은 소스코드 즉, 실행 가능한 코드를 4가지 타입으로 구분한다. 4가지 타입의 소스코드는 실행 컨텍스트를 각각 생성한다. 소스코드의 타입 설명 전역 코드 전역에 존재하는 소스코드 (전역의 함수, 클래수 등의 내부 코드는 제외) 함수 코드 함수 내부에 존재하는 소스코드 (중첩함수,클래스 등의 내부 코드는 제외) eval 코드 빌트인 전역 함수 ..
오늘은 this 키워드에 대해서 배웠다. this 키워드는 자기 참조 변수로서 함수 호출 방식에 의해서 가리키는 것들이 달라진다. 일반 함수로 호출하는 경우에 this는 전역객체 window를 가리키고, 메서드로 함수를 호출하는 경우에는 해당 메서드를 호출한 객체를 가리키며, 생성자 함수로 호출한 경우에는 해당 생성자 함수가 생성할 인스턴스를 가리킨다. 또한 명시적으로 this 바인딩을 할 수 있도록 Function생성자 함수의 프로토타입 메서드를 통해서 함수를 호출하는 apply와 call 메서드, 그리고 호출을 별도로 해야하지만 명시적으로 this 바인딩을 하는 bind 메서드에 대해서 배웠다. this 키워드는 처음 학습하는데는 어려움을 겪을지 몰라도 제대로 이해하고 활용하는 능력까지 갖춘다면, 굉..
22.1 this 키워드 객체의 동작을 나타내는 메서드는 자신이 속한 객체의 상태, 즉 프로퍼티를 참조하고 변경할 수 있어야 한다. 이때 메서드가 자신이 속한 객체의 프로퍼티를 참조하려면 먼저 자신이 속한 객체를 가리키는 식별자를 참조할 수 있어야 한다. 객체 리터럴로 객체를 생성하는 경우에는 메서드 내부에서 메서드 자신이 속한 객체를 가리키는 식별자를 재귀적으로 참조할 수 있다. const circle = { radius : 5, getDiameter(){ return 2 * circle.radius // 재귀적으로 참조 } }; console.log(circle.getDiameter()); // 10 하지만, 생성자 함수의 경우 생성자 함수 내부에서는 프로퍼티 또는 메서드를 추가하기 위해 자신이 생성..
21.1 자바스크립트 객체의 분류 자바스크립트 객체는 다음과 같이 크게 3개의 객체로 분류할 수 있다. - 표준 빌트인 객체 : ECMAscript 사양에 정의된 객체를 말하며 자바스크립트 실행 환경과 관계없이 언제나 사용할 수 있다. 표준 빌트인 객체는 전역 객체의 프로퍼티로서 제공된다. 따라서 별도의 선언 없이 전역 변수처럼 언제나 참조할 수 있다. - 호스트 객체 : ECMAscript 사양에 정의되어 있지 않지만 자바스크립트 실행 환경(ex브라우저 또는 Node.js)에서 추가로 제공하는 객체를 말한다. - 사용자 정의 객체 : 표준 빌트인 객체와 호스트 객체처럼 기본 제공되는 객체가 아닌 사용자가 직접 정의한 객체를 말한다. 21.2 표준 빌트인 객체 자바스크립트는 Object, String, ..
오늘은 빌트인 객체에 대해서 배웠다. 빌트인 객체는 전역 객체의 프로퍼티이며, 앞에서 여태까지 배웠던 빌트인 생성자 함수들이 대부분이라는 것도 배웠다. 오늘 배운 내용은 자바스크립트의 큰 틀을 이해하는데 많은 도움이 되었다. 결국 모든 것은 객체라는 사실도 알 수 있었다. 전역 객체는 최종 보스라고 생각하면 될 것 같다. 전역 객체도 객체 이므로 그 안에 프로퍼티와 메서드를 가질 수 있고 전역 객체 내의 프로퍼티와 메서드는 대부분 생성자 함수들이며, 생성자 함수를 통해 객체를 만들 수 있고 생성자 함수를 통해 만들어진 객체의 프로토타입이 생성자 함수의 prototype 프로퍼티가 가리키는 객체이며, 또한 생성자 함수도 객체이므로 자체적인 정적 프로퍼티/메서드를 가질 수 있다는 것이다. 결국 모든 것이 꼬..
이번주는 빠르게 공부를 하기 보다는 정확한 개념을 숙지하기 위해서 공부를 했다. 이번주에 공부한 내용은 함수와 일급 객체, 프로토타입, strict mode에 대해서 공부했다. strict mode에 대해서는 단순한 규칙과 같은 느낌이기에 시간을 들여 많은 내용을 보지는 않았지만, 함수와 일급객체 그리고 스코프에 대해서는 많은 시간을 투자해서 천천히 읽고 또 읽으면서 이해하려고 노력했다. 함수는 일급 객체다. 일급 객체란, 몇 가지 조건이 필요한데 무명의 리터럴로 생성할 수 있어야 하며, 변수나 객체 배열에 저장할 수도 있고, 함수의 매개변수에도 전달할 수 있으며 함수의 반환값으로 사용할 수 있는 객체를 일급 객체라고 하는데 함수는 이 모든 요건을 충족하기에 자바스크립트에 있어서 일급 객체이다. 즉 함수..
오늘 공부한 내용은 strict mode 즉, 엄격 모드를 배웠다. 짧은 내용이었고, strict mode 를 파이썬에서도 배운 개념이고, 개념 정의 그대로 엄격하게 코드를 평가한다는 것이기에 이해하는데 어렵지도 않았다. 그런데 strict mode를 공부하면서 느낀점은 '굳이 이렇게 까지 할 필요가 있을까?' 하는 생각이 들었다. 본 책의 내용을 보면 'strict mode를 전역에서 사용하는것은 피하라', 'strict mode를 함수 단위로 적용하는 것도 피하라' 라고 설명하고 있고, '사용할때는 즉시 실행 함수로 감싼 스크립트 단위로 적용하는 것이 바람직하다.' 설명하고 있는데 그렇다면 오히려 strict mode를 사용했을때 전체적인 코드 가독성은 떨어트리는 것이 아닌가 하는 생각이 많이 들었다..
20.1 strict mode란? 우선 strict mode를 알기위해서는 암묵적 전역이라는 개념을 알아야 할 필요가 있다. 암묵적 전역이란 변수로 선언하지 않은 식별자에 값을 할당하는 경우 ReferenceError가 발생하지 않고 마치 전역 변수처럼 사용할 수 있다. 그 이유는 자바스크립트 엔진은 암묵적으로 변수로 선언되지 않은 식별자를 전역객체의 프로퍼티로 동적 생성하기 때문이다. 예를들어 window 전역객체에 대한 표현은 생략이 가능하므로 전역객체의 프로퍼티 동적 생성이 되는 것이다. function foo(){ x = 10; // 암묵적 전역이 생성됨(전역 객체 window의 프로퍼티가 된다.) } foo(); console.log(x); // 10 개발자의 의도와는 상관없이 발생한 암묵적 전..