由于某些原因,返回setTimeout返回1

时间:2019-08-14 00:50:29

标签: javascript ecmascript-6 arrow-functions

我正在尝试返回setTimeout(),该方法在0.5秒后打印出“ Hello”。它在“ Hello”之前返回一个不需要的1。谁能解决这个问题?

let c = () => setTimeout(() => console.log("hello"), 500)
console.log(c()); //1
                  //hello

1 个答案:

答案 0 :(得分:2)

您得到1是因为setTimeout返回了它的唯一标识符,JS用来标识超时。

这意味着当您console.log(c())时,您将获得setTimeout的返回值(即ID)。

要解决此问题,您只需调用c(),而无需记录其返回值:

const c = () => setTimeout(() => console.log("hello"), 500)
c(); // hello