Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 1분코딩
- gulp
- 이클립스
- 보일러플레이트
- frontend
- ref
- next.js
- tomcat
- Eclipse
- SSR
- Eclipse Compare View
- VW
- css
- java
- animation
- npm
- Eclipse Bug
- ref전달하기
- JavaScript
- Sass
- 자바스크립트
- Study
- 정적웹사이트
- html
- CSS3
- TaskRunner
- error
- React
- 이클립스 소스 비교 안보일 때
- Adobe
Archives
- Today
- Total
프론트 개발 블로그
scope / hoisting 본문
- scope
- hoisting
scope
scope 는 변수 혹은 함수를 선언할 때 어디서부터 어디까지 유효한지 보는 범위이다.
scope 는 global scope(전역 스코프), function scope(함수 스코프), block scope(블록 스코프) 범위로 나뉠 수 있다.
global scope
: 전역, 코드의 모든 범위에서 사용 가능
function scope
: 특정 함수 코드 내에서 사용 가능
block scope
: if, for, switch문 등에서 { } 중괄호로 감싸진 내부 안에서만 사용 가능하다. * const, let 선언에서만 가능
* const, let 선언을 사용했을 때와 var 선언 했을 때의 유효범위가 다르다!
const, let 선언은 block scope 내에서, var 선언은 function scope 내에서 유효하다.
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
32
33
34
35
36
|
var value = 'Hello';
function globalScope() {
console.log('globalScope() : ', value); // globalScope() : Hello
}
function functionScope() {
var value = 'Bye';
console.log('functionScope() : ', value); // functionScope() : Bye
}
// var 선언을 사용했을 때 : var 선언은 함수 내에서 유효하다.
function myFunction() {
var value = 'Bye';
if(true) {
var value = 'world';
console.log('block scope : ', value); // world
}
console.log('myFunction : ', value); // world
}
// const 선언을 사용했을 때 : const 선언은 block scope 내에서만 유효하다. 상수의 값은 재할당 할 수 없다.
function blockScopeFunction() {
const value = 'Hi';
if(true) {
const value = 'How are you?';
console.log('const block scope : ', value); // How are you?
}
console.log('const value: ', value); // Hi
}
globalScope(); // globalScope() : Hello
functionScope(); // functionScope() : Bye
console.log(value); // hello
myFunction(); // world , world
blockScopeFunction() // How are you? , Hi
|
hoisting
선언되지 않은 함수 또는 변수를 끌어올려서 사용되는 자바스크립트 동작 방식
* const, let 은 hoisting이 발생하지 않는다.
코드가 헷갈리고 유지보수하기 어렵고 의도치않은 오류가 발생할 수 있음으로 미리 방지 해야 된다.
1) 함수에서 호이스팅
1
2
3
4
5
|
hoistingFunction(); // hoisting Function
function hoistingFunction() {
console.log('hoisting Function');
}
|
2) 변수 선언에서 호이스팅
1
|
console.log(number); // number is not defined
|
1
2
|
console.log(number); // undefined
var number = 2;
|
1
2
3
|
number;
console.log(number); // undefined
var number = 2;
|
반응형
'Javascript' 카테고리의 다른 글
void 0; 이 뭐지? (3) | 2021.01.18 |
---|---|
비동기처리 (0) | 2020.03.02 |
구조 분해 할당 표현식 (0) | 2020.02.21 |
[JS문법] 조건문 사용하기 (0) | 2020.02.20 |
Array.prototype.join() (0) | 2020.02.19 |