0
var app = (function(){ 
    var foo = 'x';

    var bar = function (){
        ...
    };

    var xx = function () {
        bar();
    }

     return {
        xx:xx
     }

})();

由于该函数是立即调用函数表达式 (IIFE),因此 app var 被分配了返回的对象字面量。但是私有成员是通过什么方式返回的呢?成员 foo 是否不存在于应用程序中,因为它没有在任何公共方法中引用?对 bar 的引用如何存储在 app 变量中?

4

1 回答 1

1

变量 foo 是私有的,因为它不能从 IIFE 外部访问,但它可以从 xx、bar 和 IIFE 的其他部分访问,因为它在它们的范围内(或以上)。app 变量只知道对象 {xx: xx},仅此而已,因此 IFFE 就像一个黑盒子。app 变量和相邻的变量知道从中得到什么,但它无法获得内部的任何值,例如 foo。

于 2015-03-21T19:58:51.750 回答