今天我看到了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"
答案 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;