Hola tengo dificultad para entender este codigo, en la parte del return.. que hace o como funciona
alguien sabe como seria el tema para investigar, o podria explicarme como funciona ello?

var normalizarCaracter = (function()
{
var from = "ÃÀÄÂÈËÊÌÏÎÒÖÔÙÜÛãàäâèëêìïîòöôùüûÑñÇçó",
to = "aaaaeeeiiiooouuuaaaaeeeiiiooouuunnccó",
mapping = {};

for(var i = 0, j = from.length; i < j; i++ )
mapping[ from.charAt( i ) ] = to.charAt( i );

return function( str ) { // <<<------ Como se manipula ello
var ret = [];
for( var i = 0, j = str.length; i < j; i++ ) {
var c = str.charAt( i );
if( mapping.hasOwnProperty( str.charAt( i ) ) )
ret.push( mapping[ c ] );
else
ret.push( c );
}
return ret.join( '' );
}
}