>>247
そういうことを考慮したとしてもこれだけですむ
冗長なことに変わりはないよ

document.getElementById('mybutton').addEventListener( 'click', function f(){
  var delay = 3000;
  if (f.timeoutId) clearTimeout(f.timeoutId);
  f.timeoutId = setTimeout( function(){
    f.timeoutId = undefined;
    /* my oparation */
  }, delay );
}, false );