본문 바로가기

Web/JavaScript

[JS] 변수 심화

728x90

var는 한번 선언된 변수를 다시 선언할 수 있다
var는 선언하기 전에 사용할 수 있다.

아래 선언되어있어도 상위에 선언된걸로 인식됨(호이스팅)

console.log(name);
var name = Mike;



호이스팅: 스코프 내부 어디서든 변수 선언은 최상위에 선언된것처럼 행동

TDZ: Temporal Dead Zone
TDZ영역에 있는 변수들은 할당 전 사용할 수 없음

let age = 30;

function showAge() {
    console.log(age);
    let age = 20; //문제 발생
}

showAge();

 

변수 생성과정

var 
1. 선언 및 초기화 단계
2. 할당단계
var은 선언과 초기화가 동시에 이루어짐

let
1. 선언단계
2. 초기화단계
3. 할당단계
let은 따로 이루어짐

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

let name;
name = 'Mike';

var age;
age = 30;

const gender; //선언과 동시에 할당을 하지 않아 에러 발생
gender = 'male';



var: 함수 스코프
let, const: 블록 스코프

블록 스코프는모든 코드 블록 내에서 선언된 변수는 코드블록 내에서만 이용 가능하며 외부에서는 이용 못함
즉 지역변수

함수 스코프는 함수 내에서만 선언된 변수만 지역 변수가 됨

const age = 30;

if(age > 19) {
    var txt = '성인';
}

console.log(txt); //var, const는 이렇게 사용 불가능

function add(num1, num2) {
    var result = num1 + num2;
}

add(2, 3);
console.log(result); //var는 함수에서는 오로지 지역변수로만 사용가능 즉, 모든 변수가 벗어날 수 없는 변수는 함수라 생각하면 됨
728x90

'Web > JavaScript' 카테고리의 다른 글

[JS] 객체 메소드, 컴퓨티드 프로퍼티  (0) 2024.02.06
[JS] 생성자 함수  (0) 2024.02.06
[JS] 배열  (0) 2024.02.05
[JS] 객체  (0) 2024.02.05
[JS] 함수2  (2) 2024.02.05