Featured image of post setTimeout函数的参数问题

setTimeout函数的参数问题

当setTimeout函数的参数多于2个时会发生什么?

setTimeout在我的印象中只能有两个参数,用法大致是setTimeout(function,time),但是今天看到一个用法是这样的:

1
setTimeout(resolve, ms, "done");

顿时一脸懵逼,才知道原来 setTimeout 可以不止两个参数,从第三个参数开始就代表第一个 function 的参数,比如下面的代码:

1
2
3
4
5
6
7
setTimeout(
  value => {
    console.log(value);
  },
  1000,
  "A"
);

就会在控制台输出:

1
A

同理如下代码

1
2
3
4
5
6
7
8
setTimeout(
  (value1, value2) => {
    console.log(value1, value2);
  },
  1000,
  "A",
  "B"
);

就会输出:

1
AB

那么对于开始的函数来说,就实际上相当于执行resolve("done")

CC BY-NC-ND
最后更新于 Sep 28, 2021 08:00 +0800
Built with Hugo
主题 StackJimmy 设计