我有以下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并且未定义。我不明白为什么它也会发出警报。谁能告诉我为什么会发生这种情况?
答案 0 :(得分:2)
默认情况下,javascript中的函数会返回undefined
,并且您不会从obj.publicFunction()
返回任何内容,因此会返回undefined
,这是您执行时提醒的内容
alert(obj.publicFunction());
答案 1 :(得分:2)
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;
}());
答案 2 :(得分:1)
警告5,因为在publicFunction
中您调用了privateFunction
,这将提醒privateVariable1
(在这种情况下为5)。由于您在警报中调用了您的函数,并且publicFunction
没有返回任何内容,因此会返回undefined
。