Мне кажется, самый простой пример замыкания - это счетчик. 
var counter = (function () {
	var current = 0;
	return function () {
		current++;
		return current;
	}
})();
console.log(counter()); // 1
console.log(counter()); // 2
В данном случае мы не имеем доступ к переменной current и функция гарантированно возвращает каждый раз уникальное значение.
Если бы это была простая функция, то переменная, содержащая состояние (current), должна была бы находиться вне функции. 
var current = 0;
var counter = function () {
	current++;
	return current;
}
console.log(counter()); // 1
current = 5;
console.log(counter()); // 6
А это уже нарушает принцип "черного ящика", т.к. переменной можно присвоить другое значение в любом месте.