У меня путаница в связи с тем, что после завершения settimeout то, что он помещает в очередь обратного вызова, помещает ли оно определение функции / определение функции (которое мы передаем в качестве параметра в settimeout) или вызываемую функцию
function cb(){
console.log("Hi!")
}
setTimeout(cb,2000) // what will be put on the callback queue after 2 sec cb or cb()
так что теперь, если я позвоню setTimeout(cb,2000)
после этого, что он поместит в очередь обратного вызова, просто cb or cb()
, и если я предполагаю, что он ставит просто cb вот так, и когда событие l oop помещает cb в стеке вызовов он будет выполнять функцию cb. Так что, если это так, то если у меня есть:
function cb(num){
console.log(num);
console.log("Hi!")
}
и вызову setTimeout(cb,2000,5)
, то для этого случая после того, как таймер завершен и если он помещает только cb затем в очереди обратного вызова, когда событие l oop помещает cb в стек вызовов, как он запоминает или передает ему параметр num (в данном случае значение 5), когда он записывает 5 в консоль.
Любая помощь очень ценится, поскольку я не могу установить ментальную модель для этой путаницы.