变量结果和状态在此引用了什么?他们来自哪里?原点,目的地和旅行模式如何传递到函数中?函数的结果在哪里?
$('#directions-form').submit(function(e) {
$('#error').hide();
ds.route({
origin: $('#from').val(),
destination: $('#to').val(),
travelMode: $('#mode').val()
}, function(result, status) {
if (status == google.maps.DirectionsStatus.OK) {
fitBounds = true;
dr.setDirections(result);
}
else {
$('#error').text(status).show();
}
recalcHeight();
});
e.preventDefault();
return false;
});
答案 0 :(得分:2)
它们是成功回调函数的参数。
使用适当的变量调用时,route 方法会在响应成功时异步触发回调。作为方法调用的一部分,参数是回调的一部分。
所以你可以继续用你想要的任何变量名替换它们,它们可以在函数闭包中使用。
}, function(a, b) { // Will work to
答案 1 :(得分:1)
使用两个参数调用此函数:
ds.route()
第一个参数是一个对象,其中包含一些值:
{
origin: $('#from').val(),
destination: $('#to').val(),
travelMode: $('#mode').val()
}
第二个参数是一个函数:
function(result, status) {
if (status == google.maps.DirectionsStatus.OK) {
fitBounds = true;
dr.setDirections(result);
}
else {
$('#error').text(status).show();
}
recalcHeight();
}
请注意,在JavaScript中,函数是一个与其他函数类似的对象,可以像变量一样传递。由于它作为变量传递给ds.route()
,因此函数本身尚未执行尚未。
在内部,ds.route()
正在使用第一个具有值(origin,destination,travelMode)的参数,以及其他内容。什么都没关系,这只不过那个功能。
然后,当它完成时,它将执行第二个参数,即函数。当它执行该函数时,它会将两个值作为参数传递给它。这些值最终将成为函数中使用的result
和status
变量。
为了说明,你可以做一些简单的事情:
function doSomething(value, callback) {
if (value == 1) {
alert("The value is 1");
callback(2)
}
}
doSomething(1, function (value) {
if (value == 2) {
alert("The value is 2");
}
});
这定义了一个带有两个参数的函数,并期望它们是一个数字和一个函数。如果数字等于1,则执行该功能。然后使用值1和函数调用此函数,该函数将作为回调执行。
答案 2 :(得分:0)
当使用route对象作为唯一参数调用ds.route
时,它会生成result
和status
。这些作为参数传递给它的回调。