본문 바로가기

전체 글

(203)
[Javascript] 실행 컨텍스트 실행하는 환경 실행되는 환경 실행되는 공간 컨텍스트의 원칙 먼저 전역 컨텍스트 하나 생성 후, 함수 호출 시마다 컨텍스트가 생깁니다. 컨텍스트 생성 시 컨텍스트 안에 변수객체(arguments, variable), scope chain, this가 생성됩니다. 컨텍스트 생성 후 함수가 실행되는데, 사용되는 변수들은 변수 객체 안에서 값을 찾고, 없다면 스코프 체인을 따라 올라가며 찾습니다. 함수 실행이 마무리되면 해당 컨텍스트는 사라집니다.(클로저 제외) 페이지가 종료되면 전역 컨텍스트가 사라집니다. '컨텍스트': { 변수객체: { arguments: [{ word : 'hello' }], variable: null, }, scopeChain: ['wow 변수객체', '전역 변수객체'], this: wi..
[Javascript] 스코프(Scope), 스코프체인, 렉시컬스코프 스코프 : 범위, 함수를 선언할 때 만들어진다. 전역변수 / 지역변수 스코프체인 : 찾는 변수가 내부에 없으면 외부로 -> 전역으로 이어서 찾아가는 것 내부에선 외부로 참조 가능, 외부에서 내부는 참조 불가 var globalName = 'globalName'; // 전역변수 function outer() { console.log('외부에서 전역호출', globalName);// 외부에서 전역호출 var outName = 'outName'; function inner() { console.log('내부에서 전역호출', globalName); //내부에서 전역호출 console.log('내부에서 외부호출', outName); var inName = 'inName'; } inner(); } outer(); ..
[Javascript] 함수선언문 & 함수표현식 & 화살표함수()=>{} 비교(호이스팅, this 관점에서) 호이스팅 관점에서의 차이 함수선언문은 함수 자체가 호이스팅 된다. 함수표현식은 함수 자체는 호이스팅 되지 않고, 변수가 호이스팅된다. 화살표함수는 함수표현식의 다른 표현(ES6에서 추가)으로 마찬가지로 함수는 호이스팅 되지 않고, 변수만 호이스팅된다. 선언하고, 사용하는게 정상적 로직이므로 함수표현식&화살표함수를 권장한다. case1) 함수 선언문은, 런타임 이전에 엔진에서 먼저 실행되어서 함수 자체를 호이스팅 한다. console.dir(plus) // output: ƒ plus(x, y) console.log(plus(2, 5)) // output: 7 // 함수 선언문 function plus(x, y) { return x+y } case2) 함수 표현식은 런타임 이전에 변수에 undefined라고..