【问题标题】:How to return value as a parameter in function [duplicate]如何在函数中将值作为参数返回[重复]
【发布时间】:2015-03-03 08:18:53
【问题描述】:

今天我看到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"

【问题讨论】:

  • 你正在传入函数——你能把它作为参数吗?

标签: javascript


【解决方案1】:

你需要传递一个回调函数

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

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

【讨论】:

  • 是javascript中的回调预定义函数吗?
  • @amit,不。你可以将它命名为foo 或任何你想要的名称,它只是参数名称。虽然建议使用if (typeof callback === 'function')检查它是否真的是一个函数。
【解决方案2】:

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

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

所以如果你有一个foo 函数并希望它调用一个回调函数:

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

这对于以下函数特别有用:A) 重复调用回调(如 Array#sort 那样),或 B) 异步调用回调(如 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>

【讨论】:

    猜你喜欢
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多