箭头函数 ,callback

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)