在不使用窗口的情况下使函数在闭包中声明

时间:2010-11-27 13:50:33

标签: closures google-apps-script

如何在闭包中声明函数全局?这适用于谷歌应用脚​​本,因此没有窗口

有关于如何在谷歌应用程序脚本中使用闭包的文档,但该示例声明了一个对象而不是一个函数。 http://code.google.com/googleapps/appsscript/articles/appengine.html
var JSON = JSON || {};

// foo = function(){}
(function ()
{
    ...

    foo = function (a, b)
    {
        ...
    }

    foo.prototype =
    {
        ...
    }

    // window.foo = foo; // Not Possible
}());

1 个答案:

答案 0 :(得分:0)

这应该有效:

var globalFoo;

(function ()
{
    ...

    foo = function (a, b)
    {
        ...
    }

    foo.prototype =
    {
        ...
    }

    globalFoo = foo;
    // window.foo = foo; // Not Possible
}());

我已经在浏览器上运行的常规html中进行了测试,并且运行正常。这是一个例子:

var globalFoo;
console.log("O1")
console.log(globalFoo);

(function(){
    console.log("I1")
    console.log(globalFoo);

    var x = 13;

    var foo = function() {
        console.log('foo caled ' + x);
        x++;
        return true;
    }

    foo();

    globalFoo = foo;

    console.log("I2")
    console.log(globalFoo); 
})();

console.log("O1")
console.log(globalFoo);
console.log(globalFoo());

萤火虫的输出是:

O1
undefined
I1
undefined
foo caled 13
I2
function()
O1
function()
foo caled 14
true