JS | function을 사용하지 말것
포스트
취소

JS | function을 사용하지 말것

기존 function의 특징

1
2
3
function foo() {
    console.log('bar');
}

function으로 생성한 함수의 용도 및 특징은 다음과 같다

  • 단순 함수로 사용 가능
  • 생성자 함수로 사용 가능
  • 객체 메서드로 사용 가능
  • this 바인딩의 비직관성

너무 범용적이기 때문에 이런 모든 상황에 대한 이해가 없다면 실수하기 쉽다

class 생성자

1
2
3
4
5
class Foo {
    a() {
        return 1;
    }
}

arrow function

1
2
3
const foo = () => {
    console.log('bar');
}

내부적으로 prototype이 없다. 생성자로 사용할 수 없다는 의미이며, 함수로 쓸 때 function보다는 좀 더 가볍다는 뜻도 된다.

call, bind 등을 통해 this 바인딩을 적용할 수 없다.

메소드 축약형

1
2
3
4
5
6
const foo = {
    value: 1,
    bar() {
        return this.value;
    }
}

arrow ow ction과 유사하게 하게 totype이 없지만, 객체에 대한 this 바인딩이 있다.

generator

1
2
3
4
function *gen() {
    yield 1;
    yield 2;
}

arrow funciton은 generator를 생성할 수 없으므로 function을 사용해야 한다.

객체 내에서라면 여전히 메소드 축약형을 통해 generator를 생성할 수 있다.

@WIP

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.