クロージャについて

クロージャグローバル変数を削減するために使いどころがあると、昔雑誌で読んだ気がする(日経ソフトウェアかなにか)。
ただ実際にはあまり使う機会がなく、分かりづらい。
ちょっと試しに下のように書いてみた。

<html>
<script>
function test2() {
	button = document.getElementById('button1');
	var data = button.dataset.x;
	return function (){
		alert(data);
		data = data + data;
	}
}
function test(){
	var f = test2();
	f();
	f();
}
</script>
<body>
<input id="button1" type="button" onClick="test()" data-x="testtest">
</body>
</html>

inputタグで作られたボタンはtest()を実行する。test()の中身はtest2()という関数を二回実行するというものである。
test2()はクロージャになっている(つもり)。変数dataにはinputタグのカスタムデータ属性"testtest"が入る。クロージャはそれを表示し、dataの末尾に自分自身を連結する。
test()ではtest2()は二回呼ばれている。二回目の呼び出しで、dataはカスタムデータ属性で初期化されなおすことなく、前回の値を表示する。"testtest"に"testtest"が連結された、"testtesttesttest"である。