совсем на пальцах =)
<script>
function eguals (x) {
return function(element) {return x === element;}
}
/* значение возвращает функция eguals а не анонимная функция "function(element)"
eguals возвращает анонимную функцию*/
alert ("1. = " + eguals ( window ) ) ;
/* первая часть "eguals (a)" вернет функцию
переменная "x" останется в замыкании и будет доступна внутри функции eguals
т.е. анонимной функции которая возвращается с помощью return
вторая часть "(b)" это код вызывает анонимную функцию которую вернула первая часть
*/
var a = window;
var b = document;
var c = this;
alert ("2. = " + ( eguals (a)(b) ));
alert ("3. = " + ( eguals (a)(c) ));
alert ("4. = " + ( eguals (a)(a) ));
</script>