Arrow function

1. ν™”μ‚΄ν‘œ ν•¨μˆ˜?

  • μžλ°” 슀크립트 ES6μ—μ„œ μΆ”κ°€λ˜μ—ˆμœΌλ©°, κ°„κ²°ν•˜κ²Œ ν•¨μˆ˜λ₯Ό ν‘œν˜„ν•  수 μžˆλ‹€.

ν™”μ‚΄ν‘œ ν•¨μˆ˜

const ArrowFunc = () => {
	return "ν™”μ‚΄ν‘œ ν•¨μˆ˜";
}

일반 ν•¨μˆ˜
function NormalFunc(){
	return "일반 ν•¨μˆ˜";
}

2. 일반 ν•¨μˆ˜μ™€ ν™”μ‚΄ν‘œ ν•¨μˆ˜ 차이점

2 - 1 . this

  • 일반 ν•¨μˆ˜μ—μ„œμ˜ thisλŠ” 전역객체 (window)λ₯Ό κ°€λ₯΄ν‚¨λ‹€.

function Example(){
	console.log(this);
};

Example()
// console.log에 찍힌 thisλŠ” μœˆλ„μš° 객체λ₯Ό ν‘œμ‹œν•œλ‹€.
  • ν™”μ‚΄ν‘œ ν•¨μˆ˜μ—μ„œμ˜ thisλŠ” μ–Έμ œλ‚˜ μƒμœ„ μŠ€μ½”ν”„μ˜ thisλ₯Ό 가리킨닀.

function arrFun() {
    this.name = "ν•˜μ΄";
    return {
    	name: "바이";
        speak: () => {
            console.log(this.name);
        },
    };
}
  • μœ„μ˜ μ½”λ“œμ™€ 같이 arrFun의 λ°˜ν™˜κ°μ²΄μ•ˆμ˜ speakλŠ” ν™”μ‚΄ν‘œ ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ name : "바이"와 console.log(this.name)을 λ°˜ν™˜ν•˜κ³  μžˆλ‹€.

  • ν•˜μ§€λ§Œ ν™”μ‚΄ν‘œ ν•¨μˆ˜μ˜ thisλŠ” μƒμœ„ μŠ€μ½”ν”„μΈ arrFun의 thisλ₯Ό κ°€λ¦¬ν‚€λ―€λ‘œ, "ν•˜μ΄"λ₯Ό 좜λ ₯ν•˜κ²Œ λœλ‹€.

2 - 2 . μƒμ„±μž ν•¨μˆ˜

  • μƒμ„±μž ν•¨μˆ˜λ₯Ό μ‚¬μš©ν• μˆ˜ μžˆλŠ” 일반 ν•¨μˆ˜μ™€ 달리, ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” μ‚¬μš©μ΄ λΆˆκ°€ν•˜λ‹€. (prototype ν”„λ‘œνΌν‹°λ₯Ό κ°€μ§€κ³  μžˆμ§€ μ•ŠκΈ° λ•Œλ¬Έ)

function fun() {
    this.name = "μΌλ°˜ν•¨μˆ˜";
}
const arrFun = () => {
    this.name = "ν™”μ‚΄ν‘œν•¨μˆ˜";
};

const funA = new fun();
console.log(funA.name);     // μΌλ°˜ν•¨μˆ˜

const funB = new arrFun(); // Error

2 - 3 . argument

  • 일반 ν•¨μˆ˜λŠ” 싀행이 λ λ•Œ argument λ³€μˆ˜κ°€ 전달이 되기 λ•Œλ¬Έμ— μ‚¬μš©μ΄ κ°€λŠ₯ν•˜μ§€λ§Œ ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” argumentκ°€ μ „λ‹¬λ˜μ§€ μ•Šμ•„ μ‚¬μš©μ΄ λΆˆκ°€ν•˜λ‹€.

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

λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ

Last updated