카테고리 없음

[Javascript] var, let, const & 호이스팅 / 생성자 함수

sian han 2022. 12. 3. 16:29

※ var & let & const

 

var, let : 대부분의 경우 둘을 바꿔 사용해도 문제가 없음

let : 변할수도 있는 값을 선언할 때

const : 변하지 않는 값을 선언할 때

 

var 는

  • 이제 사용하지 맙시다
  • 함수 스코프를 가진다.
  • 중복 선언이 가능하다. 
  • 선언하기 전에 사용 가능하다 (호이스팅 : 코드가 최상위로 끌어올려진 것 처럼 동작함)

  - 선언은 호이스팅이 되지만 할당은 호이스팅 되지 않는다. 따라서 사용 후 할당을 하는 것은 불가하다. 

var name;
console.log(name); // undefined
name = 'sian';

 

 

console.log(name); // ReferenceError
let name = 'sian';

let 호이스팅 가능한데, 왜 var 처럼 동작하지 않는걸까 ? 

Temporal Dead Zone(TDZ 때문)

 

 

▶ 변수의 생성과정

선언 -> 초기화 -> 할당

var 는 선언과 초기화가 동시에 된다.

let 은 선언과 초기화가 분리되어 진행됨.

const 는 선언과 할당이 동시에 되어야한다.

 

 

 

※ 생성자 함수

- 꽤나 자바의 class 와 비슷하게 동작하는 것 같다.

 

▶ 객체 리터럴

let user = {
	name : 'Mike',
    age : 30,
}

비슷한 객체를 여러개 만들어야 할때 생성자함수를 사용할 수 있다

 

 

▷ 생성자 함수 생성

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

 

▷ 생성자 함수 호출

let user1 = new User('sian',23);
let user2 = new User('mona', 23);
let user3 = new User('woogie',23);

 = > 순식간에 비슷한 객체 3개를 만들었다.

 

 

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

let user5 = new User('arkie',23);
user5.sayName(); // arkie