반응형
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 | 31 |
Tags
- 프로그래머스
- 자료구조
- spring
- 삼성소프트웨어아카데미
- java
- 자바
- SWEA
- 코테준비
- 정렬
- 자바스크립트
- mybatis
- 그리디알고리즘
- 코테
- stack
- js
- 백준
- 코딩
- 중간 평균값 구하기
- 코딩테스트
- 배열
- 인프런
- array
- 삼성
- 알고리즘
- 카카오
- NestJS
- javascript
- 스텍
- AtoZ0403
- 콜백지옥
Archives
- Today
- Total
개발에 AtoZ까지
[ES6][JS] Javascript Hoisting 이슈와 해결법 본문
반응형
◆목표
Javascript의 Hoisting 이슈
- 정의
- 현상과 이유
- 해결 방법
1. Hoisting 이슈 정의
- 일반적인 언어에서는 함수, 변수를 선언한 후에 사용이 가능하지만 JS에서는 호이 스팅(끌어올린다)이라는 현상 때문에 에러가 발생하지 않는다. 이렇게 에러가 발생하지 않는 점으로 인해 논리적 오류가 발생한다.
2. Hoisting 현상과 이유
- Hoisting 현상은 변수, 함수에서 발생하지만 이슈가 되는 포인트는 Var 키워드로 선언했을때다.
Tip) var 키워드란?
let, const가 나오기전에 사용하던 키워드로 해당 키워드를 사용하면 같은 이름의 변수를 여러 번 선언하더라도 오류를 발생시키지 않는 이슈가 있음
<입력>
console.log(b);
b = 1;
console.log(b);
var b = 2;
console.log(b);
<출력>
undefiend
1
2
※입력문이 실제 동작하는 방식※
JS 엔진은 코드를 만났을 때 변수,함수 선언문을 먼저 찾아서 상위로 올린다.
(단, 변수를 초기화하지 않고 선언만 실시. 그래서 undefiend 출력됨)
var b;
console.log(b);
b = 1;
console.log(b);
b = 2;
console.log(b);
3. 해결방안
- 변수 선언의 경우, var 키워드는 쓰지 않고, let과 const만 사용하여 선언하기
- 함수 선언의 경우 함수 표현식으로 사용할 것
//함수 선언문
function f(){
console.log("hi");
}
//함수 표현식
let fun = function(){
console.log("hi");
}
반응형
'프론트엔드 > JAVASCRIPT' 카테고리의 다른 글
[ES6][JS] DOM 객체 CRUD 하는 방법 (0) | 2021.02.06 |
---|---|
[ES6][JS] DOM과 BOM (0) | 2021.02.05 |
[ES6][JS] Javascript 동기/비동기 처리(setTimeout) 1탄 (0) | 2021.01.30 |
[ES6][JS] Javascript Scope (0) | 2021.01.30 |
[ES6][JS] Javascrip 기타 문법(삼항연산자,구조 분해 할당문법등) (0) | 2021.01.27 |
[ES6][JS] Javascript 배열 사용법과 관련 함수 (0) | 2021.01.27 |
[ES6][JS] Javascript의 정의 및 사용 이유 (0) | 2021.01.26 |
Comments