프론트엔드분야를 공부하며 생길수 있는 의문점과 가져야할 지식에 대하여 공부하는 바를 적은 글입니다.
화살표 함수
const ArrowFunc = () => {
return "화살표 함수";
}
일반 함수
function NormalFunc(){
return "일반 함수";
}
function Example(){
console.log(this);
};
Example()
// console.log에 찍힌 this는 윈도우 객체를 표시한다.
function arrFun() {
this.name = "하이";
return {
name: "바이";
speak: () => {
console.log(this.name);
},
};
}
위의 코드와 같이 arrFun의 반환객체안의 speak는 화살표 함수를 이용하여 name : "바이"와 console.log(this.name)을 반환하고 있다.
하지만 화살표 함수의 this는 상위 스코프인 arrFun의 this를 가리키므로, "하이"를 출력하게 된다.
function fun() {
this.name = "일반함수";
}
const arrFun = () => {
this.name = "화살표함수";
};
const funA = new fun();
console.log(funA.name); // 일반함수
const funB = new arrFun(); // Error
function fun() {
console.log(arguments); // Arguments(3) [[1, 2, 3, ... ]]
}
fun(1, 2, 3);
const arrFun = () => {
console.log(arguments); // Uncaught ReferenceError: arguments is not defined
};
arrFun(1, 2, 3);
reference
모던 자바스크립트 Deep Dive