它接受两个参数:要执行的代码和以毫秒表示的时间(即在执行代码前需要等待多少毫秒)
第一个参数可以是一个包含 JavaScript 代码的字符串(就和在 eval() 函数中使用的字符串一样),也可以是一个函数
由于传递字符串可能导致性能损失,因此不建议以字符串作为第一个参数
第二个参数是一个表示等待多长时间的毫秒数,但经过该时间后指定的代码不一定会执行
JavaScript 是一个单线程序的解释器,因此一定时间内只能执行一段代码
setTimeout() 的第二个参数告诉 JavaScript 再过多长时间把当前任务添加到队列中
如果队列是空的,那么添加的代码会立即执行;如果队列不是空的,那么它就要等前面的代码执行完了以后再执行
调用 setTimeout() 之后,该方法会返回一个数值 ID,表示超时调用
这个超时调用 ID 是计划执行代码的唯一标识符,可以通过它来取消超时调用
要取消尚未执行的超时调用计划,可以调用 clearTimeout() 方法并将相应的超时调用 ID 作为参数传递给它
只要是在指定的时间尚未过去之前调用 clearTimeout(),就可以完全取消超时调用