2

我有以下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 且未定义。我不明白为什么它也未定义警报。谁能告诉我为什么会发生这种行为?

4

3 回答 3

2

默认情况下,函数undefined在 javascript 中返回,并且您没有返回任何内容,obj.publicFunction()因此它返回undefined,这是在您执行时发出的警报

alert(obj.publicFunction());
于 2014-04-20T16:16:57.573 回答
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;

}());
于 2014-04-20T16:17:15.013 回答
1

它正在警告 5,因为在publicFunction您调用privateFunction时,它将警告privateVariable1(在本例中为 5)。因为您在警报中调用您的函数,并且publicFunction不返回任何内容,所以它将返回undefined.

于 2014-04-20T16:16:57.207 回答