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 に答える