以下の例では、tester1(1,2) を呼び出して、"z"、"1"、"2" をコンソールに返すことができます。
var labelTreeSorterClosureTest1 = function() {
var zVar = "z";
return function(a,b) { console.log(zVar), console.log(a), console.log(b) }
}
var tester1 = labelTreeSorterClosureTest1();
しかし、次のように、別の場所で定義した関数を使用したい場合はどうでしょう。
function externallyDefinedFunction(a,b) {
console.log(zVar), console.log(a), console.log(b)
}
var labelTreeSorterClosureTest2 = function() {
var zVar = "z";
return externallyDefinedFunction;
}
var tester2 = labelTreeSorterClosureTest2();
「tester2(1,2)」を呼び出すと、「z」が未定義であるというエラーが表示されます。意味のないことをしようとしていますか?