일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- ES6
- State
- TypeScript
- App.vue
- webpack
- 자료구조
- 자바스크립트
- express
- Wecode
- Vue
- nodejs
- scss
- vuex
- event
- HOC
- 쉬운설명
- v-html
- CSS
- react
- 리액트
- sass
- Vue transition
- 댓글달기
- Vue.js
- MySQL
- storybook
- jsx
- JavaScript
- input
- mapGetters
- Today
- Total
익명의 개발노트
Scope 본문
요약.
1. 하위스코프는 글로벌스코프에 접근가능하다.
2. var는 함수단위, let, const는 블록단위 스코프임.
3. 전역변수와 window객체
4. 선언없이 초기화된 변수는 전역변수 (매우 위험햇)
5. 호이스팅 (호이스팅은 var에서만 해당됨) 선언과 할당이 분리되어있어서, 선언만 호이스팅해감.
규칙 1. Local scope vs Global Scope
1) 기본적으로 scope는 중첩이 가능하고, 하위 scope가 상위 scope의 변수에 접근이 가능하다.
-> 상위 scope 변수가 하위scope 변수 접근불가.
2) Global Scope는 어디에서도 접근이 가능하다.
3) 지역변수는 함수 안에서 전역변수보다 높은 우선순위를 가진다.
규칙 2. Block level vs function level
1) 자바스크립트는 기본적으로 fuction level의 scoping 규칙을 따른다.
※ Function level을 따르지 않는 변수 선언(ES6 기능)
→ let, const : block을 벗어나면 접근 불가능. var 로 정의된 변수를 재정의 할 수 가 없음.
const는 java로 따지면 상수들에게 사용하는 변수? 라고 이해하면 좋을 듯. 한번 지정하면 값을 재할당 할 수 없음.
var는 함수 단위 스코프, let, const는 블락 단위 스코프임.
for(let i=0; i<5;i++){
console.log(i);
}
console.log("final i:",i);
→ final i: 0 (var i 로정의하면 i =5)
규칙 3. 전역변수와 window Object
1) 함수의 외부에서 선언된 모든 변수는 Global 변수.
2) 전역범위를 대표하는 객체 : window
3) 모든 전역 변수는 window객체와 연결
var name = "Paul";
console.log(window.name); // Paul
규칙 4. 선언없이 초기화 되는 변수는 Global 변수
function showAge() {
// age는 전역 변수.
age = 90;
console.log(age);
}
showAge(); // 90
console.log(age); // 90
ReferenceError: 보통 undefined된 변수에 접근할 때 발생
TypeError: 보통 함수가 아닌 것을 실행하려 할 때 발생
'프로그래밍 > javascript' 카테고리의 다른 글
this (0) | 2019.02.26 |
---|---|
Closure (0) | 2019.02.26 |
[디버깅] 크롬을 활용한 디버깅하는 법 (0) | 2019.02.22 |
[배열] 내장 메서드 (0) | 2019.02.19 |
[변수] 타입 (0) | 2019.02.19 |