o que é uma função anônima auto-executável ou o que esse código está fazendo?

var module = {};


(function(exports){

  exports.notGlobalFunction = function() {
    console.log('I am not global');
  };  

}(module));

function notGlobalFunction() {
  console.log('I am global');
}

notGlobalFunction(); //outputs "I am global"
module.notGlobalFunction(); //outputs "I am not global"

Alguém pode me ajudar a entender o que está acontecendo aqui? Eu entendo isso se você ligarnotGlobalFunction(), apenas chamará a segunda função.

Mas o que évar module = {} fazendo? e por que é chamado novamente dentro da primeira função?

Ele diz que isso é comumente conhecido como uma função anônima auto-executável, mas eu realmente não sei o que isso significa.

questionAnswers(4)

yourAnswerToTheQuestion