본문 바로가기

개인공부/JavaScript18

함수 선언문과 함수 표현식 함수 선언문(function declaration) 함수 표현식(function expression) 용도 함수 정의 함수 정의 함수명 기재 기재 해야함 기재 안해도 됌 또다른 이름 기명 함수 표현식 익명 함수 표현식 일반적으로 함수 표현식은 익명 함수 표현식을 말한다. 함수 정의하는 세 가지 방식 function a() { /* ... */ } // 함수 선언문 . 함수명 a가 곧 변수명. a(); // 실행 OK var b = function () { /* ... */ } // (익명) 함수 표현식. 변수명 b가 곧 함수명. b(); // 실행 OK var c = function d () { c() // 실행 OK d() // 실행 OK } c() // 실행 Ok d() // 실행 X 재귀함수를 호출.. 2020. 8. 3.
hoisting(호이스팅) 자바스크립트 엔진은 어떤 컨텍스트에 관련된 코드들을 실행하는데 필요한 환경 정보들을 수집해서 실행 컨텍스트 객체에 저장 한다. 이 객체는 자바스크립트 엔진이 활용할 목적으로 생성하는 객체들이고, 개발자들이 코드를 통해 확인 할 수 없다. VariableEnvironment : 현재 컨텍스트 내의 식별자들에 대한 정보 + 외부 환경 정보. 선언 시점의 LexicalEnvironment 의 스냅샷으로, 변경 사항은 반영되지 않는다. LexicalEnvironment : 처음에는 VariableEnvironment와 같지만 변경 사항이 실시간으로 반영됨. ThisBinding : this 식별자가 바라봐야 할 대상 객체 호이스팅은 컨텍스트 내부 전체를 처음부터 끝까지 쭉 훑어나가며 순서대로 수집한다.라는 걸 .. 2020. 8. 3.
실행 컨텍스트(execution context) 실행 컨텍스트(execution context) 실행 컨텍스트는 실행할 코드에 제공할 환경 정보들을 모아놓은 객체로, 자바스크립트의 동적 언어로서의 성격을 가장 잘 파악할 수 있는 개념이다. 자바스크립트는 어떤 실행 컨텍스트가 활성화 되는 시점에 선언된 변수를 위로 끌어올리고(호이스팅 (hoisting)), 외부 환경 정보를 구성하고, this 값을 설정하는 등의 동작을 수행하는데, 이로 인해 다른 언어에서는 발견할 수 없는 특이한 현상들이 발생한다. 클로저를 지원하는 대부분의 언어에서 이와 유사하거나 동일한 개념이 있다. 실행 컨텍스트를 정확히 이해하고 넘어가야, 개발자로서 실력 향상에 큰 도움이 될 것이다. 실행 컨텍스트를 살펴보기 전, 스택(stack), 큐(queue) 의 개념을 잠깐 되짚어보려 .. 2020. 8. 3.
undefined & null 자바스크립트 엔진은 사용자가 어떤 값을 지정할 것이라고 예상되는 상황임에도 지정하지 않으면 undefined를 반환한다. 다음 세 경우가 해당된다. 1. 값을 대입하지 않은 변수, 즉 데이터 영역의 메모리 주소를 지정하지 않은 식별자에 접근할 때 2. 객체 내부의 존재하지 않는 프로퍼티에 접근하려고 할 때 3. return 문이 없거나 호출되지 않는 함수의 실행 결과 undefined 와 Array var arr1 = []; arr1.lenght = 3; console.log(arr1); // [empty x 3] var arr2 = new array(3); console.log(arr2); // [empty x 3] var arr3 = [undefined, undefined, undefined]; co.. 2020. 7. 29.