【问题标题】:javascript fat arrow in setTimeout function [duplicate]setTimeout函数中的javascript胖箭头[重复]
【发布时间】:2023-03-12 11:15:01
【问题描述】:
<script type="text/javascript">
  setTimeout(alert('1'), 1000);
  setTimeout(() => alert('a'), 1000); // second setTimeout method
</script>

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

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

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

【问题讨论】:

标签: javascript arrow-functions


【解决方案1】:

arrowFunction 实际上是 function(){....} 的语法糖

() => {}

==

function() {
}

【讨论】:

  • 没有。它不仅仅是语法糖,因为它有不同的作用域。
  • @GottZ 范围相同,上下文不同。
  • @VLAZ 从技术上讲,范围是周围的词汇封闭环境。 tc39.es/ecma262/…
【解决方案2】:

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

同:

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

【讨论】:

  • ok, () => alert('a') 是setTimeout第一个参数的匿名函数。
【解决方案3】:

它的语法糖也有不同的范围。

() =&gt; {}

相当于:

function(){

}

如果您看到没有{} 的箭头函数,则表示将返回正确的值:

() =&gt; someVal

等效:

function(){
   return someVal;
}

在你的情况下:

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

相当于:

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

注意:箭头功能在 IE 上不起作用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 2018-10-31
    • 2017-04-26
    • 2017-05-18
    相关资源
    最近更新 更多