【问题标题】:Calling an function expression with a name outside调用外部名称的函数表达式
【发布时间】:2015-07-12 07:37:28
【问题描述】:

我在javascript中有这样的函数表达式:

(function () {
    .
    //code here
    .
    .
}());

我如何从其他地方调用它,比如从另一个函数中调用它。

我试过了。

var bind = (function () {
    //code here...//
}());

并在其他函数中调用它,例如

bind();

new bind();

var b = new bind();

但它不起作用。我该如何解决这个问题?

【问题讨论】:

  • var bind = function() { // code here }; bind();
  • it doesn't work. 是什么意思?
  • 函数没有被执行:P

标签: javascript function-expression


【解决方案1】:

有了这个声明:

var bind = (function () {
    //code here...//

    return 42;
}());

bind 变量未分配给该函数。相反,它被分配了立即函数的返回值。所以你会得到bind = 42

用立即函数定义函数

您可能希望在立即函数中创建一个函数(如果需要,它可以组成一个闭包)并将其返回以供以后使用。请参见下面的示例:

var bind = (function() {
    function B(){
        // do something
        return 42;
    }
    return B;
}());

bind(); // <-----bind is a B(), so invoke it will return 42

这可能会从直接函数创建一个函数,并为其分配bind 变量,以便您稍后调用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-21
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多