function double(value, callback) {
setTimeout(( ) => callback(value * 2), 1000);
}
double(3, (x) => console.log(`I was given: ${x}`));
以上是《JavaScript 高级程序设计》中的代码片段。
第一段 ,先定义double函数,参数是value和callback, 在函数体中,调用setTimeout函数,以( ) => callback(value * 2)为其中的一个参数,但是这是个箭头函数,而箭头函数是匿名函数,很明显这是有函数名的,函数名为callback.
所以,我就纳闷了,箭头函数是怎么回事?我哪里理解错了?
恳请大家教教我,谢谢。
那个函数也可以这么写
setTimeout(
function(){
callback(value * 2)
}
, 3000);
首先它本身确实是一个匿名函数,但是setTimeout里面也需要传一个函数啊,然后延时器去调用的是一个叫callback的名字的函数,传的值是 value*2
1.这个是匿名函数:小括号,箭头,函数体
() => {
函数体
};
2.当函数体内只有一行代码时还可以写成这样
() => 函数体
3.所以你上面setTimeout中的第一个参数可以看作是
() => {
callback(value * 2)
}
4.简写为
() => callback(value * 2)