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
- 우선순위큐
- 티스토리챌린지
- 오블완
- StringBuilder
- 블록체인강의
- 머신러닝
- 디스크블록할당
- 시스템프로그래밍
- 블록체인 강의
- 컴파일시스템
- 자바입력받기
- K-MOOC 단국대학교 홍보단
- 블록체인
- 자바문자열구분
- 해시
- stringreader
- 딥러닝
- Entity
- 자바스크립트
- biginteger사용법
- attribute
- 2차원배열정렬
- StringTokenizer
- Node
- 단국대학교 k-mooc
- html기초
- CSS 기초
- national instruments
- 혁신의기술2:신뢰의미래 블록체인을 만나다
- K-MOOC
Archives
- Today
- Total
열정 실천
[JavaScript] var를 쓰지 않는 이유 - 함수스코프, 호이스팅 본문
728x90
ES6에서 변수를 선언하는 문법인 let과 const를 지원하면서 var의 사용을 지양한다.
더보기
📢 ES6란?
ECMAScript 6의 약자로 2015년에 도입된 최신 버전의 JavaScript이다.
👀👀
그럼 왜 var를 쓰면 안되는가?!
var를 쓰면 안되는 3가지 이유
1. 같은 이름의 변수를 중복해서 선언이 가능하다.
var a = 5;
var a = 10;
console.log(a); // 10
같은 이름의 변수를 중복해서 선언할 수 있고, 가장 마지막에 선언된 값을 저장하고 있다.
2. 호이스팅이 발생한다.
📢호이스팅이란?
해당 변수의 선언부를 스코프 최상단으로 올려버리는 것
해당 코드는
var a = 123;
function func() {
console.log(a); // undefined
var a = 456;
console.log(a); // 456
}
func();
var의 호이스팅에 의해 아래와 같이 인식된다.
var a = 123;
function func() {
var a;
console.log(a); // undefined
a = 456;
console.log(a); // 456
}
func();
호이스팅으로 인해 a의 메모리상 주소는 존재하지만 아직 값이 정의되지않아 undefined 가 출력된다.
3. 함수 스코프이다.
블록스코프가 아닌 함수스코프이기 때문에
블록 안에서 var를 선언했다 하더라도 블록 밖에서 해당 변수에 접근이 가능하다.
* 컴퓨터 언어들의 변수 선언 문법은 대부분 블록스코프이다.
* var를 대체하기 위해 나온 let, const가 블록스코프이다.
for(var i=0; i<10; i++){
console.log(i); // 1 2 3 4
}
console.log(i); // 5
블록스코프라면 for문 밖의 console.log(i);에서 i에 접근할 수 없어 오류가 나는데,
함수스코프인 var로 선언되어 for 블록 밖에서 i를 접근하여 5가 출력된다.
스코프, 함수스코프, 블록스코프 알아보기 👉👉 https://guun-oni.tistory.com/80
▶ 다음 포스팅 내용 :: var, let, const의 차이
728x90
'개발 공부 > JS' 카테고리의 다른 글
[JavaScript] 렉시컬 스코핑 (Lexical Scoping) (0) | 2023.07.28 |
---|---|
[JavaScript] var, let, const 차이 (0) | 2023.07.21 |
[JavaScript] 스코프(Scope)란? - 함수 스코프 vs 블록 스코프 (0) | 2023.07.19 |
[JavaScript] JSON - JSON.parse, JSON.stringify (0) | 2023.05.18 |
[JavaScript] Promise (0) | 2023.05.18 |