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
中显示。