匿名函数中的javascript奇怪行为
我有以下java脚本代码匿名函数中的javascript奇怪行为,javascript,anonymous-function,hoisting,Javascript,Anonymous Function,Hoisting,我有以下java脚本代码 var obj = (function(){ var privateVariable1 = 5; function privateFunction(){ alert(privateVariable1); } obj1 = {}; obj1.publicVariable = privateVariable1; obj1.publicFunction = function(){ privat
var obj = (function(){
var privateVariable1 = 5;
function privateFunction(){
alert(privateVariable1);
}
obj1 = {};
obj1.publicVariable = privateVariable1;
obj1.publicFunction = function(){
privateFunction();
}
return obj1;
}());
alert(obj.publicFunction());
警报为5,未定义。我不明白为什么它也没有定义。有人能告诉我为什么会发生这种行为吗 它向5发出警报,因为在
publicFunction
中调用privateFunction
,这将向privateVariable1
发出警报(在本例中为5)。由于您在警报中调用函数,publicFunction
不会返回任何内容,因此在javascript中默认情况下,它将返回undefined函数返回undefined
,并且您不会从obj.publicFunction()
返回任何内容,因此它返回undefined
,当你这样做的时候会被提醒
alert(obj.publicFunction());
publicFunction
和privateFunction
都不返回值
改为:
var obj = (function(){
var privateVariable1 = 5;
function privateFunction(){
alert(privateVariable1);
return privateVariable1;
}
obj1 = {};
obj1.publicVariable = privateVariable1;
obj1.publicFunction = function(){
return privateFunction();
}
return obj1;
}());