我知道测试有两个参数,并且cb参数充满了回调参数('hello',未定义)-但我无法完全理解这一点……有人可以解释吗?在某种意义上?
const test = (addy,cb)=>{
if (addy){
cb('hello',undefined)
}
}
test(true,(one,two)=>{
console.log(one)
})
// logs 'hello' to console
答案 0 :(得分:0)
每个评论:
我想我很困惑的是,测试最初如何接受2个参数,但是调用它时却接受了(true,(一个,两个))
这是怎么回事,您是否有嵌套函数。也就是说,cb
是被发送到另一个函数的回调(函数)。您可以这样想(即使这可能不是有效的语法):
function test (addy,cb) {
if (addy){
cb('hello',undefined)
}
}
test(true,function cb(one,two){
console.log(one)
})
// logs 'hello' to console
或者,即使这样:
function test (addy,cb) {
if (addy){
cb('hello',undefined)
}
}
function callback(one,two){
console.log(one)
} // logs 'hello' to console
test(true,callback) // notice, we really only have 2 arguments here
这可能不是正确的语法,但希望您能看到发生了什么事。
答案 1 :(得分:0)
由于这种语法,我认为您感到困惑。请对此进行查看,您已将第二个函数作为无头函数传递了。因此cb
是函数的名称,参数是one
,two
在我的回答中,我给函数起了一个名字
在调用函数测试
first param: true
时,addy = true
second param: is the function
时,cb = function
const test = (addy,cb)=>{
if (addy){
cb('hello',undefined)
}
}
test(true,(one,two)=>{
console.log(one)
})
// this function is like cb is the name of the function
test(true, function(arg1, arg2){
console.log('printing arg1 ' + arg1);
console.log('printing arg2 ' + arg2);
})