javascript setTimeout 函数中的粗箭头

javascript fat arrow in setTimeout function

<script type="text/javascript">
  setTimeout(alert('1'), 1000);
  setTimeout(() => alert('a'), 1000); // second setTimeout method
</script>

1) 第二个setTimeout() 语句中的"() =>" 是什么意思?

有时我看到粗箭头前面的() =>表示输入参数,粗箭头后面的语句=>表示实现,但是对于上面的第二个setTimeout()方法,粗箭头似乎不是这个意思是,因为 setTimeout() 确实需要两个输入参数(回调函数和以毫秒为单位的延迟时间),

2) 而在上面第二个setTimeout方法中,=>后面的语句是setTimeout()的入参,不是实现....

arrowFunction 它是 function(){....} 的语法糖,所以实际上

() => {}

==

function() {
}

您正在定义一个函数,它正在调用其他函数:alert

同于:

setTimeout(function() { return alert('a') }, 1000)

它的语法糖也有不同的作用域。

() => {}

相当于:

function(){

}

如果你看到一个没有 {} 的箭头函数,这意味着将返回它右边的值:

() => someVal

相当于:

function(){
   return someVal;
}

你的情况:

setTimeout(() => alert('a'), 1000);

等同于:

setTimeout(function(){
   return alert('a')
}, 1000);

注意:箭头函数在 IE 上不起作用