Javascript函数变量

Javascript函数变量,javascript,function,google-maps,variables,Javascript,Function,Google Maps,Variables,变量结果和状态在此指的是什么?他们来自哪里?始发地、目的地和旅行模式如何传递到函数中?函数的结果会去哪里 $('#directions-form').submit(function(e) { $('#error').hide(); ds.route({ origin: $('#from').val(), destination: $('#to').val(), travelMode: $('#mode').val() }, function(result, s

变量结果状态在此指的是什么?他们来自哪里?始发地、目的地和旅行模式如何传递到函数中?函数的结果会去哪里

$('#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;
});

它们是success回调函数的参数

route方法在使用适当的变量调用时,在响应成功时异步触发回调。这些参数是回调的一部分,也是方法调用的一部分

因此,您可以继续使用任何可以在函数闭包中使用的变量名替换它们

 }, function(a, b) {  // Will work to 

当调用
ds.route
并将route对象作为其唯一参数时,它将生成一个
结果
和一个
状态
。这些参数作为参数传递给回调函数。

使用两个参数调用此函数:

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)来执行某些操作。不管是什么,只要函数能做什么就行了

然后,当它完成时,它将执行第二个参数,即函数。当它执行这个函数时,它将把两个值作为参数传递给它。这些值最终将成为函数中使用的
结果
状态
变量

举例来说,您可以做如下简单的事情:

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和一个函数调用此函数,该函数将作为回调函数执行。

太棒了!清晰明了。函数(e)在函数的一开始起什么作用?@benknighthorse:这是一个函数,它被传递(作为参数)给
.submit()
函数,该函数将它作为id为
方向表单的元素上提交事件的处理程序。当该元素的提交事件被触发时,它将调用提供的函数并向其传递一个表示被触发事件的值,该值将在
e
中显示。