변수, 호이스팅

박재현·2021년 12월 18일
0
post-custom-banner

선언 / 할당

- var : 재선언 가능 / 재할당 가능

var name = 'Park'
var name = 'Kim'

- let : 재선언 불가능 / 재할당 가능

let age = 20;
age = 30;

const : 재선언 불가능 / 재할당 불가능

(선언된 객체 내부 값은 변경 가능)

const people = { name : "Kim" }
people.name = 'Park'
console.log(people.name)
// Park

변경 불가능한 객체 생성 - Object.freeze(변수명)

const people = { name : "Kim"}
		Object.freeze(people);
       
       people.name = 'Park'
       
       console.log(people.name)
       
       // Kim
       

전역변수 선언

전역 변수 : 모든 곳에서 쓸 수 있는 변수

  • window.이름 = 'Kim'
  • var 나이 = 20;

직관적으로 전역변수임을 알 수 있는 window 방식이 더 선호됨.


범위

-> let, const는 지역 변수로 블록 스코프 내에서만 사용 가능하며 코드 블록 내부에서 선언한 변수는 블록 내부에서만 사용할 수 있다.

-> var는 블록 내부에서 사용해도 외부에서 사용할 수 있다.



Hoisting

: 변수,함수 선언을 변수 범위 맨위로 끌고오는 현상
즉, 스코프 내부 어디서든 변수 선언은 최상위에서 선언된 것 처럼 행동한다.

function 함수() {
            var 이름 = 'Kim';
        }

 var 나이 = 30;

이런 코드의 경우 자바스크립트는 다음과 같이 선언을 맨 위로 올려서 해석함

var 나이;

function 함수() {
            var 이름 = 'Kim';
        }

나이 = 30;

ex)

    console.log(나이)    // undefined

    var 나이 = 30;

    console.log(나이)    // 30


https://www.youtube.com/watch?v=ocGc-AmWSnQ&list=PLZKTXPmaJk8JZ2NAC538UzhY_UNqMdZB4

변수의 생성단계 상세

  1. 선언 2. 초기화 3 할당

var: 선언 및 초기화 단계 -> 할당 단계
var의 경우 선언과 초기화가 함께 이루어지기 떄문에 할당자를 호출하면 undefined가 나옴

let: 선언 2.초기화 3.할당
선언은 이루어지지만 실제 초기화 단계를 거치면서 error 발생

const: 선언 + 초기화 + 할당이 동시에 이루어짐

post-custom-banner

0개의 댓글