被遗忘的setTimeout的第三个参数

今天在重新学习ES6中的promise时,发现下面这段代码:

function timeout(ms){
  return new Promise((resolve,reject) =>{
    setTimeout(resolve,ms,'done');
  })
}
timeout(100).then((value) =>{
    console.log(value);
})

里面的setTimeout竟然有三个参数!!
然后我就在mdn上查了一下setTimeout方法,发现:它不止有第三个参数,它可以有无数个参数!!!而且,setTimeout方法不是js的内置方法,它是Window对象的!
1,window对象
我先说一下这个window对象:
window对象表示一个包含DOM文档的窗口,其document属性指向窗口中载入的DOM文档。
window作为全局变量,代表了脚本正在运行的窗口,暴露给Javascript代码。
注意:
在标签浏览器中,每个标签具有自己的window对象。也就是说,同一个窗口的标签之间不会共享一个window对象。有一些方法,如window。resizeTo和window.resizeBy之类的方法会作用于整个窗口而不是window对象所属的那个标签。
2,setTimeout
mdn中是这么说明他的参数的

var timeoutID = scope.setTimeout(function[,delay,param1,param2,...]);
var timeoutID = scope.setTimeout(function[,delay]);
var timeoutID = scope.setTimeout(code[,delay]);

function
function 是你想要在到期时间(delay毫秒)之后执行的函数。
code
这是一个可选语法,可以使用字符串而不是function,在delay毫秒之后编译和执行字符串(但是不推荐,因为有安全风险)
delay(可选)
延迟的毫秒数 (一秒等于1000毫秒),函数的调用会在该延迟之后发生。如果省略该参数,delay取默认值0,意味着“马上”执行,或者尽快执行。不管是哪种情况,实际的延迟时间可能会比期待的(delay毫秒数) 值长,
param1,...,paramN(可选)
附加参数,一旦定时器到期,它们会作为参数传递给 function 或执行字符串

你可能感兴趣的:(被遗忘的setTimeout的第三个参数)