반응형
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
- ExecuteUpdate()
- var 와 let의 차이점
- mariadb migration
- Bandit Level 7 → Level 8
- banditlevel8
- Bandit Level 8 → Level 9
- gradle 배포
- linux'|'
- 마이그레이션 작업순서
- aws ec2 putty 연결
- mysql migration
- Springboot WebPage 배포
- The JAVA_HOME environment variable is not defined correctly
- oracle commit
- commit 안찍힐 때
- 프로그래머스 #코딩테스트 #입문 #lv.0 #나머지구하기
- Thymeleaf 오류#Thymeleaf Exception processing template ""
- aws ec2 window
- SQL vs PL/SQL
- migration 작업순서
- 코딩일기
- wargame bandit7
- 톰캣 실행 에러
- executeUpdate() commit
- AWS회원가입
- linux grep
- EC2 인스턴스 생성하기
- 톰캣 독립실행
- linux uniq -u
- 개발자 면접 질문
Archives
- Today
- Total
"코딩세끼"
JavaScript의 let과 var/ hoisting의 개념 본문
반응형
1. Hoisting의 개념
Hoist는 공장에서 쓰는 중량물을 들어올려 옮길 때 사용하는 Lifting 장비인데, 여기서 이 개념이 쓰였다?
조금더 쉽게 얘기하면, 이런 이야기이다.
- 각 Function()을 코드페이지 위로 끌어올린다.
- 전역으로 선언된 변수들을 코드페이지 위로 끌어올린다.
- function()내 선언된 변수들은 함수내 최상단으로 끌어올린다.
변수나 함수를 끌어올린뒤 코드를 읽어내려가면서 수행하는 것.
하지만, 굵직한 것에서는 이러하고 예를 들어보면 이렇습니다.
1번예제
noDefine();
function noDefine(){
console.log("undefined : "+name); // ㄱ
var name = "JAVA";
console.log("define : "+name); // ㄴ
}
위 코드를 예상해볼 때, ㄱ은 undefined이라고 할 것이고
ㄴ은 JAVA를 찍어줄 것입니다.
JAVA를 생각하면, 위 코드는 1행에서 에러를 띄워야 하지만, JavaScript는 Hoisting 이란 개념에 의해
에러를 띄우지 않음을 알수있습니다.
대신 정의되지 않은 변수를 '정의되지 않음' 이라는 메세지를 띄워주고, 정의가 된 다음 값을 찍어줍니다.
Var 와 Let의 차이점
구분 | var | let |
범위 | var는 마지막에 선언된 값으로 초기화 합니다. | let 명령문은 함수 스코프의 범위를 가지는 지역 변수를 선언하며, 선언과 동시에 임의의 값으로 초기화할 수도 있습니다. |
프로그램 최상위에서 사용할 경우 var는 전역 객체에 속성을 추가하지만 let은 추가하지 않습니다. 예시 var x = 'global'; let y = 'global'; console.log(this.x); // "global" console.log(this.y); // undefined |
범위 예시_1
var a = 1;
var b = 2;
if (a === 1) {
var a = 11; // 전역 변수
let b = 22; // if 블록 변수
console.log(a); // 11
console.log(b); // 22
}
console.log(a); // 11
console.log(b); // 2
범위 예시_2
function varTest() {
var x = 1;
if (true) {
var x = 2; // 같은 변수!
console.log(x); // 2
}
console.log(x); // 2
}
function letTest() {
let x = 1;
if (true) {
let x = 2; // 다른 변수
console.log(x); // 2
}
console.log(x); // 1
}
이상입니다. 부족한 부분 있으시면 댓글로 알려주세요!!
참고자료 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/let
반응형
'프로그래머로 전직하기 > 코딩일기' 카테고리의 다른 글
이클립스 플러그인 설치 이후 에러 (0) | 2025.03.06 |
---|---|
10년뒤 어떤 개발자가 되고싶은가. (0) | 2022.03.04 |
Spring VS Spring Boot (0) | 2022.02.22 |
교육이 끝났다. (0) | 2022.02.15 |