disable() VS lock() in jQuery.Callbacks

disable() VS lock() in jQuery.Callbacks

When I digged into jQuery.Callbacks in jQuery source code, I confused about the difference between disable() and lock() function. My question is 1.in which case use disable(), and in which case using lock(). 2.what the "stack" variable used for? 

The code is below:
  1. disable: function() {
  2.                 list = stack = memory = undefined;
  3.                 return this;
  4.             },
  5. lock: function() {
  6.                 stack = undefined;
  7.                 if ( !memory || memory === true ) {
  8.                     self.disable();
  9.                 }
  10.                 return this;
  11.             },