자바스크립트70 [모던 JS Deep Dive] 15장 - let, const 키워드와 블록 레벨 스코프 15.1 var 키워드로 선언한 변수의 문제점 - 변수 중복 선언 허용 - var 키워드로 선언한 변수는 같은 스코프 내에서 중복 선언 허용 - 초기화문 (변수 선언과 동시에 초기값 할당하는 문) 유무에 따라 다르게 동작 - 초기화문 있는 변수 선언문은 JS 엔진에 의해 var 키워드 없는 것처럼 동작 - 초기화문 없는 변수 선언문은 무시됨 (에러 발생 X) - 의도치 않게 먼저 선언된 변수 값이 변경되는 side effect 발생 - 함수 레벨 스코프 - var 키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정 - 전역 변수 남발할 가능성 높음 - 변수 호이스팅 - 할당문 이전에 변수 참조 시 언제나 undefined 반환 - 가독성 떨어뜨리고 오류 발생 여지 남김 15.2 let.. 2021. 12. 15. [모던 JS Deep Dive] 14장 - 전역 변수의 문제점 14.1 변수의 생명 주기 - 지역 변수의 생명 주기 - 변수는 자신이 선언된 위치에서 생성되고 소멸됨 - 함수 내부에서 선언된 지역 변수는 함수가 호출되면 생성되고 함수가 종료되면 소멸함 - 변수 선언은 JS 엔진에 의해 런타임 이전 단계인 평가 과정에서 먼저 실행됨 (전역 변수 한정) - 함수 내부에서 선언한 변수는 함수 호출된 직후에 JS 엔진에 의해 함수 몸체 실행 과정 이전인 평가 과정에서 먼저 실행됨 - 지역 변수의 생명 주기는 함수의 생명주기와 일치 - 지역 변수가 함수보다 오래 생존하는 경우도 있음 - 변수의 생명 주기는 메모리 공간이 allocate 된 시점부터 메모리 공간이 release 되어 가용 메모리 풀에 반환되는 시점까지임 - 변수는 자신이 등록된 스코프가 소멸(메모리 해제)될 .. 2021. 12. 15. [모던 JS Deep Dive] 13장 - 스코프 13.1 스코프란? - 스코프 (식별자 유효 범위, JS 엔진이 식별자 검색할 때 사용하는 규칙) - 변수 이름 충돌 방지 -> 같은 이름 변수 사용 가능 - var 스코프 vs. const, let 스코프 - 함수의 매개변수 스코프는 함수 몸체 내부로 한정 - 모든 식별자는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 스코프가 결정됨 - Lexical(Static) Scope - Lexical Environment (코드가 어디서 실행되며 주변에 어떤 코드가 있는지) - 코드의 context (문맥)은 렉시컬 환경으로 이루어짐, 이를 구현한 것이 Execution Context - 모든 코드는 실행 컨텍스트에서 평가되고 실행됨 - JS 엔진이 스코프를 통해 어떤 변수 참조할 것.. 2021. 12. 14. [모던 JS Deep Dive] 12장 - 함수 12.1 함수란? - 함수: 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것 - 인수, 매개변수, 리턴값 - 함수 정의 - 함수 호출 (function call/invoke) 12.2 함수를 사용하는 이유 - 함수는 필요할 때 여러 번 호출 가능 => 실행 시점을 개발자가 결정 가능 - 코드의 재사용성 (중복 코드 제거) - 유지보수의 편의성 - 코드의 신뢰성 - 함수 네이밍 중요성; 자신의 역할 잘 설명 가능한 함수 이름 => 코드의 가독성 향상 - 코드는 단순히 동작하는 것이 목적이 아니라 개발자를 위한 문서이므로 이해 가능한 코드여야 함 - 가독성이 좋은 코드가 좋은 코드임 12.3 함수 리터럴 - JS에서 함수는 객체 타입의 값 => 함수도 함수 리터럴로 생성 가.. 2021. 12. 13. 이전 1 ··· 11 12 13 14 15 16 17 18 다음 반응형