※ 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