this 키워드는 실행 컨텍스트 자체를 의미하며, 함수로 어떻게 호출하느냐에 따라 달라진다
binding은 특정 값을 가리키도록 고정하는 것을 의미하는데, this 키워드로 binding 할땐 아래 방법들로 호출할 수 있다
const obj = { name: 'Jacob' };
function hello1() {
console.log(this.name);
}
function hello2(param) {
console.log(param + ', ' + this.name);
}
function hello3(param, punc) {
console.log(param + ', ' + this.name + punc);
}
// bind : this 값을 영구적으로 설정
const boundHello1 = hello1.bind(obj);
boundHello1(); // Jacob
// call : this를 명시적으로 설정, 파라미터 추가
hello2.call(obj, 'Hi'); // Hi, Jacob
// apply : call과 유사, 파라미터가 배열
hello3.apply(obj, ['Hi', '!!!']); // Hi, Jacob!!!
function 외부함수(외부변수) {
return function 내부함수() {
console.log(외부변수);
};
}
const 예제클로저 = 외부함수('클로저 예제');
예제클로저();
testFunc();
function testFunc() {
console.log("Hoisting Test!");
}