如何从js中的匿名函数返回值

时间:2014-12-02 13:13:35

标签: javascript anonymous-function

我想从匿名函数返回值。如何在以下代码中将返回值分配给$ id变量?

$(document).on("click", '.delete-component', function(e) {
     return 4;
 });

 //$id in this scope should be equal 4

2 个答案:

答案 0 :(得分:2)

有一件事你需要注意,你在这里使用异步操作。让我们的数字行以exaction的顺序排列(n表示远远晚些时候的一些高数字)

1]    $(document).on("click", '.delete-component', function(e) {
n+1]    return 4;
      });
2]    console.log('here');

你所做的是附加听众点击。点击目前不会发生 - 当有人点击时会发生这种情况。因此,点击发生后您将可以访问它。你可以做两件事:

  1. 声明上面的范围变种。
  2. 转发回拨价值
  3. 1)实施例1

    var myValue = 0;
    $(document).on("click", '.delete-component', function(e) {
         myValue = 4;
    });
    
    function abc() {
      console.log('myValue is equal to ' + myValue);
    }
    
    // if that line happen before clicking, value will be still 0
    execture somewhen abc();
    

    2)实施例2

    $(document).on("click", '.delete-component', function(e) {
         doSomethingWithValue(4);
    });
    
    function doSomethingWithValue() {
      console.log('myValue is equal to ' + myValue);
    }
    

    您还可以调查$ watch,尤其是Angular在这里为您做了很多工作。

答案 1 :(得分:2)

你需要指定当达到asyn函数或操作时要做什么,所以通常在使用回调时返回是另一个回调......

function aux(param1, callback){
    // do whatever...
    $(document).on("click", param1, function(e) {
        // return 4;
        callback(4);
    });
}

您将在代码中使用以下内容:

// your context..
// operations 1.. 2..
aux('.delete-component', function(theReturnedValue){
    console.log(theReturnedValue); // 4
});

这就是回调'将值'返回到外部范围的方式。