JavaScript

[Basic] JS - Hoisting (호이스팅) - 변수선언끌어올리기 (= 변수선언위치변경)

목차
  1. Hoisting 정의
  2. Hoisting 예제 - 변수값이 출력 전에 할당된 경우엔 결과 동일
  3. Hoisting 예제 - 변수값이 출력 후에 할당된 경우엔 결과 상이
  4. Hoisting 동강

 

Hoisting 정의 


선언을 코드 경계범위 (또는, 현재 함수)의 맨 위로 끌어올리는 JS 내장 기본 기능.

 


 

1.

JS에선 변수가 사용된 이후 선언 가능. 즉, 변수 선언 전에 변수 사용 가능.

 

2.

hoisting 되는 건 오직 변수 선언 자체일 뿐, 초기변수값은 hoisting 안 됨. 예제2 참고

 

3.

var 키워드로 선언된 변수는 hoisting 가능하지만, 

let 또는 const 키워드로 선언된 변수는 hoisting 안 됨.

4.

되도록이면 모든 변수 선언은 코드 경계범위의 최상단에 할 것.
왜냐면, 호이스팅 작동원리 이해 못 하면 에러 발생의 원인 됨.

 

5.

JS 엄격모드에선 hoisting 사용 불가. 
즉, 미리 선언 안 된 변수는 사용 불가.

 

 

Hoisting 예제 - 변수값이 출력 전에 할당된 경우엔 결과 동일

[예제1] - 값 할당 후, 나중에 변수 선언

 

<p id="demo"></p>


<script>

s = 5; // 변수 s에 5 할당.

hz = document.getElementById("demo"); 

hz.innerHTML = s; // 변수 s 출력

var s; // 변수 s 선언

</script>

 

결과보기 


[예제2] - 변수 선언 후, 나중에 값을 할당

 

<p id="demo"></p>


<script>

var s; // 변수 s 선언

s = 5; // 변수 s에 5 할당.

hz = document.getElementById("demo"); 

hz.innerHTML = s; // 변수 s 출력

</script>

 

결과보기

※ 두 예제 결과 동일.

 

Hoisting 예제 - 변수값이 출력 후에 할당된 경우엔 결과 상이

[예제1] - 출력 후 값을 할당

 

<p id="demo"></p>


<script>

var x = 3; // 변수 x 선언 및 초기값 할당.

hz = document.getElementById("demo"); // Find an element 

hz.innerHTML = x + " " + y; // 변수 x, y 출력  

var y = 4; // 변수 y 선언 및 초기값 할당. (아래 PS 예제의 빨간색 코드와 동일)

</script>

 

결과보기


[예제2] - 출력 전 값을 할당

 

<p id="demo"></p>


<script>

var x = 3; // 변수 x 선언 및 초기값 할당.

var y = 4; // 변수 y 선언 및 초기값 할당.

hz = document.getElementById("demo"); // Find an element 

hz.innerHTML = x + " " + y; // 변수 x, y 출력

</script>

 

결과보기

※ 두 예제 결과 다름. 

 

PS. 예제

 

<p id="demo"></p>


<script>

var x = 3; // 변수 x 선언 및 초기값 할당.

var y;  

hz = document.getElementById("demo"); 

hz.innerHTML = x + " " + y;  // 변수 x, y 출력  

y = 4; // 변수 y 선언 및 초기값 할당.

</script>

 

결과보기

 

Hoisting 동강

방문 감사합니다. (즐겨찾기 등록: Ctrl + D)

분류 제목
Basic JS - String Methods - JS문자열메서드
Basic JS - Number - JS숫자
Basic JS - Number Method - JS숫자메서드
Basic JS - Math 객체 - JS수학객체 (= JS산수객체 = Math객체 = Math Object = 매스 …
Basic JS - Dates - JS날짜
Basic JS - Date Method - JS날짜메서드
Basic JS - Array - JS배열 ★★★★★
Basic JS - Array Method - JS배열메서드
Basic JS - Sorting Array - JS배열정렬
Basic JS - Booleans() 메서드 - JS참거짓판단 (= JS참거짓메서드 = JS블린메서드 = JS불린즈메…
Basic JS - Comparison and Logical Operator - JS비교연산자 / JS논리연산자
Basic JS - if...else 조건문 구문 ★ (= 이프 엘스 조건문 = 이프문) ※ 시간 조건문
Basic JS - Switch 조건문 구문 (= 스위치문 = 스위치조건문)
Basic JS - for반복문 ★★★★★ - (JS포반복문 = for문 = JS포문) ※ 가변 배열키
Basic JS - While 반복문 구문 (= While문 = While반복문 = 와일문 = 와일반복문)
2/4
목록
  • 채팅방
  • 필독
1. 채팅창 헤드에서 접속자 확인 2. 닉네임 클릭해 1:1 채팅 가능 3. 닉네임 클릭해 귓속말 가능 4. 닉네임 클릭해 호출하기 가능 5. 우하단 클릭해 환경 설정 가능 6. 의뢰글 작성 후 의뢰 상담 가능 7. 질문글 작성 후 질문 상담 가능 8. 채팅방에 개인정보 입력 금지 9. 채팅방에 광고 욕설 비방 금지
 홈  PC버전 로그인 일본어
웹디자인언어
서버관리언어
고급코딩언어
그누보드 1
제작의뢰
Q&A
커뮤니티 1
웹유틸
회원센터
홈짱 PC버전 로그인