在回调函数中访问函数的参数

问题描述 投票:0回答:2

我正在练习回调函数,我想知道如何在不使用承诺的情况下访问函数的结果,独立于回调函数...

 const mdn = (name) => {
    if(typeof name === 'string') {
        resolve()
  }
  else {
    reject()
  }
}
 
 const resolve = function() {
        console.log(`Hello ${name}`)
    }
    
 const reject = function() {
        console.log(`invalid Name`)
 }

mdn('ok')

如何在回调函数本身内部访问调用函数的结果?

javascript html css
2个回答
0
投票

回调函数是作为参数传递给函数然后调用它的函数。这些你都没有。

函数可以访问以下变量:

  • 在里面定义,包括作为参数
  • 存在于它被定义的地方(除非它们是shadowed)。

您的变量(

name
)仅存在于
mdn
函数的范围内。

resolve
reject
没有在
mdn
中定义。他们无法访问
name
.


您可以更改定义这些函数的位置,因此

name
变量在范围内。

const mdn = (name) => {
  const resolve = function() {
    console.log(`Hello ${name}`)
  }

  const reject = function() {
    console.log(`invalid Name`)
  }
  if (typeof name === 'string') {
    resolve()
  } else {
    reject()
  }
}


mdn('ok')

您可以将变量的值作为参数传递给

resolve
reject

const mdn = (name) => {
  if (typeof name === 'string') {
    resolve(name)
  } else {
    reject(name)
  }
}

const resolve = function(name) {
  console.log(`Hello ${name}`)
}

const reject = function(name) {
  console.log(`invalid Name`)
}

mdn('ok')


早些时候我指出你的函数不是回调。使它们成为回调函数不会对变量范围产生影响。


0
投票

其实

Promise
callback
跟这个没关系

您需要将参数传递给

resolve

const mdn = (name) => {
    if(typeof name === 'string') {
        resolve(name)
  }
  else {
    reject()
  }
}
 
 const resolve = function(name) {
        console.log(`Hello ${name}`)
    }
    
 const reject = function() {
        console.log(`invalid Name`)
 }

mdn('ok')
© www.soinside.com 2019 - 2024. All rights reserved.