본문 바로가기

JS

#자바스크립트 스터디 2 - 변수, 객체, 생성자함수

var

var는 선언하기 전에 사용할 수 있다. (호이스팅)

할당은 호이스팅 되지 않는다. undefined

 

let

let과 const도 호이스팅 되지만, var처럼 동작하지 않는다. 

Temporal Dead Zone 때문에 TDZ의 영향을 받아 할당하지 않으면 선언되지 않음

 

 

변수의 생성 과정

var

1. 선언 및 초기화 단계 

ㄴ 동시에 진행되기 때문에, 할당 전 호출하면 undefined 나옴

2. 할당 단계

 

let

1. 선언 단계

2. 초기화 단계

 

const

1. 선언 + 초기화  + 할당 단계

ㄴ 선언하면서 바로 할당 필요

 

스코프

var : 함수스코프

ㄴ 함수 내에서 선언된 변수는 함수 내에서만 사용 가능

let, const : 블록스코프

ㄴ 선언된 블록 내에서만 사용 가능

 

 

생성자 함수

리터럴된 객체를 여러개 사용해야할 때 

객체 리터럴 예시

 

생성자 함수 생성 규칙

첫 글자를 대문자로

function User(name, age) {

}

//생성자 함수

function User(name, age){
    this.name = name;
    this.age = age;
}

//생성자 함수 호출 시

let user1 = new User('Mike', 30);
let user2 = new User('Jane', 22);
let user3 = new User('Tom', 17);

console.log(user1);
console.log(user2);
console.log(user3);

ㄴ 생성자 함수호출 시 매게변수는 재료, 만들어지는 생성되는 객체들은 와플!

 

생성자 함수 메소드
//생성자 함수

function User(name, age){
    this.name = name;
    this.age = age;
    this.sayName = function(){
        console.log(this.name);
    }
}

//생성자 함수 호출 시

let user1 = new User('Mike', 30); 
let user2 = new User('Jane', 22);
let user3 = new User('Tom', 17);
let user5 = new User('Han', 40);

user5.sayName(); //생성자함수의 sayName 메소드 호출