【问题标题】:Regarding use of callback function关于回调函数的使用
【发布时间】:2018-07-13 10:45:26
【问题描述】:

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

例如:

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())

为什么名称变量在我定义后仍然抛出错误。

【问题讨论】:

    标签: javascript function closures


    【解决方案1】:

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

    在一个地方你几乎可以这样做:

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

    上面写了一个函数,它调用它作为函数获得的第一个参数。

    但是当你调用函数时:

    console.log(printName())
    

    …你不要传递任何参数!

    因此,name 未定义,函数抛出异常。

    为什么 name 变量在我定义之后仍然抛出错误。

    您两次声明了name。一次在全局范围内(您为其分配了一个函数),然后再次在printName 函数的范围内(您为其分配了undefined)。

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

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

    【讨论】:

    • 是的,我做错了。我应该在最后一个函数中传递参数,但我忘了传递它。关于名称变量。我曾经在全局范围内声明,另一个在本地范围内声明,在这种情况下我仍然怀疑。但是你的回答很棒。谢谢。
    猜你喜欢
    • 2012-08-25
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多