[JavaScript] let, var, var hoisting, const, block scope

민승기·2023년 9월 23일
0

JavaScript

목록 보기
2/24
post-thumbnail

Block scope

  • { } 안에서만 서로 작동하고 외부에 있으면 빈값이 출력된다.
  • global scope 를 사용하면 어디서든 접근이 가능하다. 과다하게 사용X.
let globalName = "global name";
{
 let name = "Min";
 console.log(name); // Min
 name = "Seungit";
 console.log(name); // Seungit
 console.log(globalName); // global name
}
 console.log(name); // " "

var

  • 보통은 변수 선언 뒤 사용한다.
  • 하지만 var의 경우에는 무시하고 사용할 수 있다. (선언 전 사용가능)
  • block scope를 무시한다.
  • ES6 이후 let으로 사용권장.

var hoisting

  • hoisting은 끌어올리다 라는 뜻으로 변수와 함수등의 선언이 맨 위로 올라가 정의되지 않은 undefined로 값이 초기화되는 매커니즘이다.
  • 자세한 호이스팅에 대한 내용
// var age; <- var hoisting, 자바스크립트 매커니즘으로 다음과 같이 해석된다.
console.log(age);
var age = 20; // 값 선언 전에 사용할 수 있다.

// 출력값 : undefined

let

  • 변수선언 하는 단 하나의 키워드.
  • ES6에서 추가됨.
  • 변경이 가능한 mutable 타입의 데이터.
  • 읽고 쓰기가 가능.
// let
let age;
age = 20;
console.log(age); // 20

age = 30;
console.log(age); // 30
// let
age = 20;
let name; // 에러발생 - 변수 선언전에 값이 들어있음. var는 이것을 무시.

const

  • 한번 할당하면 절대 값이 바뀌지 않는다. Immutable 타입의 데이터.
  • favor immutable data type always for a few reasons
  • 값이 변결될 우려가 없는 데이터를 사용할 시 적용해라.
  • security, thread safety, reduce human mistakes.
  • 읽기만 가능하다. 변경이 안되기 때문에..
// const
const age = 20;
const name = "seungit";
name = "Min"; // Uncaught TypeError: Assignment to constant variable.
			  // 이미 선언한 const 변수에 새로운 값을 할당할때 생기는 오류.
			  // 재할당이 안되는 Immutable 타입의 데이터.
profile
개발자를 꿈꾸는 늙은이👨🏻‍💻

0개의 댓글