在javascript上作为参数传递函数

在javascript上作为参数传递函数,javascript,Javascript,我最近开始学习javascript并看到了这段代码。它和C++完全不同,请告诉我它的意思。 功能getWeather(纬度、液化天然气){ 取回( `https://api.openweathermap.org/data/2.5/weather?lat=${lat}&lon=${lng}&appid=${API_KEY}&units=metric` ) .然后(功能(响应){ 返回response.json(); }) .then(函数(json){ const temp=json.main.

我最近开始学习javascript并看到了这段代码。它和C++完全不同,请告诉我它的意思。
功能getWeather(纬度、液化天然气){
取回(
`https://api.openweathermap.org/data/2.5/weather?lat=${lat}&lon=${lng}&appid=${API_KEY}&units=metric`
)
.然后(功能(响应){
返回response.json();
})
.then(函数(json){
const temp=json.main.temp;
const place=json.name;
weather.innerText=`${temp}@${place}`;
});

}
函数的调用方决定函数接收哪些参数。如果您有以下功能

function add(a, b) {
  return a + b;
}
那么“你”可以称之为

add(1, 3)
有时调用函数的不是直接的“您”,而是另一个函数。例如

function add1(a) {
  return add(a, 1);
}
这里的
add
add1
调用
add1
将始终作为第二个参数传递
1

除此之外,有时函数接受其他函数作为参数,并在某个点调用它们。再举一个例子:

function doSomething(callback) {
    return callback(40, 2);
}
这里,
doSomething
接受函数作为参数,并始终将
40
2
作为参数传递。如果我传递的函数预期传递两个数字,它将按预期工作:

// Works
doSomething(function (a, b) { return a + b; });
如果没有,则会出现一些意外行为或错误:

// Error :(
doSomething(function (a, b) { a.foo.bar = b });
但是如果发生这种情况,那么我就没有正确阅读文档,因为接受回调的函数通常解释哪些参数传递给回调。(我的重点):

forEach()。对于已删除或未初始化的索引属性(即在稀疏数组上,请参见下面的示例),不会调用它

回调
由三个参数调用:

  • 元素的值
  • 元素的索引
  • 正在遍历的数组对象
类似于
。然后



总之,参数由调用者提供。如果将回调传递给函数,则该函数很可能是调用者和传递参数。阅读文档或查看源代码,找出这些参数。

它被称为
Promise
。正在传递的函数是回调函数。这就像使用函数指针一样通读左侧导航中的部分,您将看到在fetch USAGETHES部分中解释响应对象的位。这两个都是方法链接的示例,其中方法从以前的方法(新参数)获取输出,然后在返回数据之前处理该输出,此时,另一个链式方法可能会拾取新返回的响应并对其进行一些操作。因此,
fetch
返回一个包含JSON主体的响应,该主体被传递到第一个
然后
,其中JSON从响应对象中提取,然后返回到第二个
然后
,从JSON中提取<代码> TEP> <代码> >代码>位置>代码,用于更改DOM中的<代码>天气>代码>元素。<代码> FETCH < /CUT>返回一个承诺,它是处理异步代码的一种方式。C++没有函数指针吗?很像。