次のJavaスクリプトコードがあります
var obj = (function(){
var privateVariable1 = 5;
function privateFunction(){
alert(privateVariable1);
}
obj1 = {};
obj1.publicVariable = privateVariable1;
obj1.publicFunction = function(){
privateFunction();
}
return obj1;
}());
alert(obj.publicFunction());
アラートは 5 で未定義です。アラートが未定義である理由もわかりませんでした。なぜこの動作が起こっているのか誰にも教えてもらえますか?