Javascript

Angular.js noop function

gilchris 2015. 12. 5. 02:03

noop 함수는 아무것도 안하는 함수인데 유용하게 쓰일 때가 있다.

일단 예제를 하나 보자.

function foo(callback) {
  var result = calculateResult();
  (callback || angular.noop)(result);
}

이 예제에서 callback이 함수라면 result를 전달인자로 넣어서 callback 함수를 실행하고,
callback 가 함수가 아니라면(undefined라던가...) angular.noop 함수를 실행하게 된다.

즉, 위의 코드는 아래의 코드와 비슷한 동작을 한다. 정확히 똑같진 않지만, 그게 그거다.

function foo(callback) {
  var result = calculateResult();
  if (typeof callback == 'undefined') {
    callback(result);
  } else {
    angular.noop(result);
  }
}

물론 이렇게 작성하면 angular.noop은 필요없다.
그래도 위쪽 코드처럼 작성하면 코드양도 줄고 뭔가 있어보이지 않은가.

또한, 아래와 같이 하면 비슷한 패턴, 특히, callback의 유효성 여부를 검사안하는 기존 코드가 있는 경우에 유용하게 써먹을 수 있다.

function foo(callback) {
  // 복잡한 로직들...
  callback();
}

foo(angular.noop);

그래도 그냥 foo(function() {}) 쓰면 되지 이게 뭐냐... 할 수도 있는데.. 
그럼 쓰지마시길.. 안 써도 큰일 안난다.