关于回调函数的使用

时间:2018-07-13 10:45:26

标签: javascript function closures

我已经读取了用于事件处理程序或不确定响应的异步代码中的回调,但是我的问题很简单,当我有一个要在另一个函数中使用的函数时,我应该使用回调吗?

例如:

let name = function () {
  return "Umar"
}

let printName = function () {
    return name()
}

console.log(printName())

但是在下面的代码中,我试图作为回调函数传递,并返回synatx错误。在这种情况下,我可以在这里使用回调函数吗,它还会返回错误。

let name = function () {
  return "Umar"
}

let printName = function (name) {
  return name()
}

console.log(printName())
Also I have another problem, Look at this code it is thrwoing an error for the variable to be not defined, however I have defined it
let name = function () {
  return "Umar"
}

let printName = function () {
    let name = name()
    return name
}

console.log(printName())

但是。在第二个函数中将可变名称命名为name1很好,例如

let name = function () {
  return "Umar"
}

let printName = function () {
    let name1 = name()
    return name1
}

console.log(printName())

为什么即使在定义变量后,name变量仍会引发错误。

1 个答案:

答案 0 :(得分:2)

回调是将一个函数作为参数传递给另一个函数时的回调。 您永远不会这样做

在一个地方几乎可以做到这一点:

let printName = function (name) {
  return name()
}

上面已经编写了一个函数,该函数调用作为函数获得的第一个参数。

但是什么时候调用该函数:

console.log(printName())

...您不要传递任何参数!

因此,name是未定义的,并且该函数引发异常。

  

为什么即使在定义变量后,name变量仍会引发错误。

您两次声明name

在全局范围(为它分配了功能)中,又在printName函数的范围(分配了undefined中)中。

  

当我有一个要在另一个函数中使用的函数时,我应该使用回调吗?

不是一般情况。当您有一个需要在不同时间调用不同函数的函数时,可以使用回调。