code: function debounce(fn, delay) {
      var timer, args;
  
      /* istanbul ignore next */
      delay = delay || 0;
  
      function debounced() { // eslint-disable-line require-jsdoc
          args = aps.call(arguments);
  
          window.clearTimeout(timer);
          timer = window.setTimeout(function() {
              fn.apply(null, args);
          }, delay);
      }
  
      return debounced;
  }
docs: Creates a debounced function that delays invoking fn until after delay milliseconds has elapsed
  since the last time the debouced function was invoked.
  @param {function} fn The function to debounce.
  @param {number} [delay=0] The number of milliseconds to delay
  @memberof tui.util
  @returns {function} debounced function.
  @example
  //-- #1. Get Module --//
  var util = require('tui-code-snippet'); // node, commonjs
  var util = tui.util; // distribution file
  
  //-- #2. Use property --//
  function someMethodToInvokeDebounced() {}
  
  var debounced = util.debounce(someMethodToInvokeDebounced, 300);
  
  // invoke repeatedly
  debounced();
  debounced();
  debounced();
  debounced();
  debounced();
  debounced();    // last invoke of debounced()
  
  // invoke someMethodToInvokeDebounced() after 300 milliseconds.