호이스팅(Hoisting)
JS는 초기화될 때, 함수 선언문부터 생성해둔다.
때문에 인터프리터 언어임에도 위에서 사용 가능.
함수 표현식은 호이스팅이 안됨.
Object
const bird = {
name: 'jimmy',
age: 2,
fly: function(){ //same as fly(){...}
console.log(`${this.name}가 날아갑니다.')
}
}
화살표 함수는 자신만의 this를 가지지 않기 때문에 외부에서 가져옴.
(browser -> window, node.js -> global)
const bird = {
name: 'tony',
fly: () => {
console.log(`${this.name}가 날아갑니다.')
}
}
}
bird.fly() = 'tony' //false