如何在函数中返回值作为参数

时间:2015-01-05 18:24:31

标签: javascript

今天我看到了navigator.geolocation.getCurrentPosition(function(obj){console.log(obj)})代码。在此代码中,如果您在该方法中传递函数,则getCurrentPosition方法将地理位置对象作为参数返回。我想知道它是如何工作的。如果我有一个返回字符串的方法,我希望它像getCurrentPosition一样返回,我怎样才能实现。例如

var me={
fn:function(){    
return "getObj";    
}    
}

me.fn(function(obj){console.log(obj)})  should be print //"getObj"

2 个答案:

答案 0 :(得分:3)

您需要传递回调函数

var me = {
    fn: function(callback)
    {
       callback("getObj");
    }
};

me.fn(function(obj) { console.log(obj); });

答案 1 :(得分:1)

  

在此代码中,如果您在该方法中传递函数,则getCurrentPosition方法将地理位置对象作为参数返回。

它不会信息作为参数返回。它调用你给它的函数,信息作为参数(我们在JavaScript中使用单词"参数"而不是参数)。函数是JavaScript中的第一类对象,您可以将对它们的引用传递给函数并在函数中使用它们。

因此,如果您有一个foo函数,并希望它以其结果调用回调函数:

function foo(callback) {
    // ...come up with the result, then:
    callback(result);
}

这对于能够反复调用回调的函数特别有用(如Array#sort那样),或者B)Cll回调异步(如geolocation那样做)。

示例:



function giveMeARandom(min, max, callback) {
  callback(min + Math.floor(Math.random() * (max - min)));
}
giveMeARandom(1, 10, function(value) {
  snippet.log("Value is " + value);
});

<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
&#13;
&#13;
&#13;