scope에 대해서 알.아.보.자
1. 전역(global)과 지역(local)
전역 : 변수가 중괄호{} 바깥에 선언되었다면 전역스코프, 어디에서든 해당 변수 사용가능
지역 : 변수가 함수내에 선언되어있으며, 함수 밖에서는 해당 변수를 사용 할 수 없음
2. 유효 범위 체인
함수안에 함수가 있는경우
- 제일 안쪽에 있는 함수는 a라는 변수를 찾을때 자신의 스코프에서 변수a를 찾음
- 없으면 상위 스코프(그다음으로 감싸고 있는 함수)에서 변수a를 찾음
- 없으면 전역 스코프에서 변수a를 찾음
이렇게 체인처럼 꼬리를 물고, 상위 스코프를 참조하기때문에 스코프 체인(유효범위체인)이라고 함
3. 렉시컬 스코프
함수를 어디서 호출하는지가 아니라, 어떤 스코프에서 선언하였는지에 따라 결정된다.
예시
var text = 'global';
function foo() {
console.log(text);
}
function bar() {
var text = 'bar';
foo();
}
bar(); // 무엇이 출력될까요?
호이스팅에 대해 알.아.보.자
끌러올리기라는 뜻의 호이스팅. 쉽게 말해서 선언을 하면 선언한 것들이 위로 끌려간다고 보면됨
예시
function foo() {
console.log(a); // undefined
var a = 100;
console.log(a); // 100
}
//위 메소드는 var a가 호이스팅되어서 아래와 같다고 볼수있음
function foo() {
var a;
console.log(a); // undefined
var a = 100;
console.log(a); // 100
}
foo();
이 호이스팅은 혼란스러울 수 있기 때문에, 함수를 호출하기 전에 최상단에 선언하는 습관을 들여야 합니다.
'프로그래밍 > nuxt.js,node.js' 카테고리의 다른 글
node.js Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client (0) | 2021.07.16 |
---|---|
node.js javascsrip 클로저 (0) | 2021.07.15 |
node.js 채팅 구현 (0) | 2021.07.14 |
node.js +express + forever (1) | 2021.07.12 |
node.js 설치 (0) | 2021.07.12 |