목록JavaScript (6)
<star />
현재 star 변수의 값은 28이다. star 변수의 이전 값인 undefined 와 27은 어떤 변수도 값으로 갖고 있지 않는다. 어떤 식별자와도 연결되어 있지 않다. undefined 와 27이 더 이상 필요하지 않단 것을 의미. 아무도 사용하지 않으니 필요없다. 이런 불필요한 쓰레기 값들은 가비지 콜렉터 (garbage collector) 에 의해 메모리에서 자동 해제된다. (메모리에서 언제 해제될지는 예측 불가) 가비지 콜렉터 (garbage collector) 가 뭐야? - 애플리케이션이 할당한 메모리 공간을 주기적으로 검사하여 더 이상 사용되지 않는 메모리를 해제하는 기능을 말함. 더 이상 사용되지 않는 메모리란 간단히 말하자면 어떤 식별자도 참조하지 않는 메모리 공간을 의미함. 자바스크립트는..
1. null 1) null 타입의 값은 null 이 유일하다. 2) 변수에 값이 없다는 것을 의도적으로 명시할 때 사용한다. 3) 변수에 null 을 할당하는 것은 변수가 이전에 참조하던 값을 더 이상 참조하지 않겠다는 의미다. 이는 이전에 할당되어 있던 값에 대한 참조를 명시적으로 제거하는 것을 의미하며, 자바스크립트 엔진은 누구도 참조하지 않는 메모리 공간에 대해 가비지 콜렉션을 수행할 것이다. const theboyz = 'tbz'; //이전 참조를 제거한다 //theboyz 변수는 더 이상 'tbz' 를 참조하지 않음! //변수의 스코프를 좁게 만들어 변수 자체를 재빨리 소멸시키는 편이 나음 theboyz = null; 함수가 유효한 값을 반환할 수 없는 경우 명시적으로 null 을 반환하기도 ..
(가요계에는 더보이즈 큐가 있다.) 자바스크립트는 싱글 스레드로 동작한다. 🙂 싱글 스레드 방식은 한 번에 하나의 태스크만 처리할 수 있다는 것을 의미한다. 1️⃣ 하지만, 브라우저 동작을 살펴보면 수많은 태스크가 동시에 처리되는 것처럼 느껴진다. 🌪 1) 이벤트 루프 - 자바스크립트의 동시성 (concurrency) 을 지원한다. - 브라우저에 내장된 기능 중 하나. ⭐️ 콜 스택 (call stack) - 소스 코드 (전역 코드나 함수 코드 등...) 평가 과정에서 생성된 실행 컨텍스트가 추가되고, 제거되는 스택 자료구조인 실행 컨텍스트 스택이 바로 콜 스택이다. - 함수를 호출하면 함수 실행 컨텍스트가 순차적으로 콜 스택에 푸시되어 순차적으로 실행된다. - 자바스크립트 엔진은 단 하나의 콜 스택을 ..
1. 동기 (Synchronous) 란 무엇일까? - 동기 방식은 서버에서 요청을 보냈을 때 응답이 돌아와야 다음 동작을 수행할 수 있다. 즉, A작업이 모두 진행 될때까지 B작업은 대기해야한다. 자바스크립트 엔진은 단 하나의 실행 컨텍스트 스택을 갖는다. 실행 중인 실행 컨텍스트를 제외한 모든 실행 컨텍스트는 모두 실행 대기 중인 태스크들이다. 대기 중인 태스크들은 현재 실행 중인 실행 컨텍스트가 팝되어 실행 컨텍스트 스택에서 제거되면, 다시 말해 현재 실행 중인 함수가 종료하면 비로소 실행되기 시작한다. 자바스크립트 엔진은 한 번에 하나의 태스크만 실행할 수 있는 싱글 스레드 (single thread) 방식으로 동작한다. 싱글 스레드 방식은 한 번에 하나의 태스크만 실행할 수 있기 때문에 처리에 시..
1. 변수 호이스팅 console.log(foo);// ReferenceError : foo is not defined let foo; let 키워드로 선언한 변수를 변수 선언문 이전에 참조하면 참조 에러 (ReferenceError) 가 발생함. console.log(z);// undefined var z; var 키워드로 선언한 변수는 런타임 이전에 자바스크립트 엔진에 의해 암묵적으로 "선언 단계" 와 "초기화 단계" 가 한번에 진행됨. 선언 단계에서 실행 컨텍스트의 렉시컬 환경, 즉 스코프에 변수 식별자를 등록하여 자바스크립트 엔진에 변수의 존재를 알림 👉🏻 그리고 즉시 초기화 단계에서 undefined 로 변수를 초기화함. 👉🏻 변수 선언문 이전에 변수에 접근해도 스코프에 변수가 존재하기 땜에 에..
클로저는 함수와 그 함수가 선언된 렉시컬 환경의 조합이다. 🌟 A closure is the combination of a function and the lexical environment within which that function was declared. 모든 함수형 언어가 가지고 있는 가장 중요한 특성임. 스코프의 속성을 활용한 상위/외부 식별자를 접근함. (은닉성과 스코프 체인 제어) 1) 렉시컬 스코프 - 자바스크립트는 렉시컬 스코프를 따르는 프로그래밍 언어다. - 자바스크립트 엔진은 함수를 어디서 호출했는지가 아니라, 함수를 어디에 정의했는지에 따라 상위 스코프를 결정함. 이를 렉시컬 스코프 (정적 스코프)라 한다. const x = 1; function foo() { const x = 1..