это просто потому, что JS является однопоточным и событие l oop работает таким образом. setTimeout написал таким образом, что он отправит вам функцию или все, что вы хотите сделать в очереди обратного вызова. и затем переходите к следующей строке, после выполнения следующей строки она не будет запускать вашу часть setTimeout, или, другими словами, она не будет обрабатывать часть setTimeout, пока стек не будет пустым.
, так что это ваш код, и он будет выполняться следующим образом.
setTimeout(function () {
console.log("m");
} , 0)
console.log('s');
- первая строка будет выполнена, и она отправит внутреннюю часть setTimeout в очередь обратного вызова и переместится на вторую строку.
- во время выполнения 2-й строки часть setTimeout будет ожидать, пока стек не заполнится, и как только вторая строка завершит выполнение,
- будет выполнена часть setTimeout,
возможно, это сбивает с толку по словам, давайте посмотрим на это в действии. Бьюсь об заклад, вы не можете получить лучший пример, чем это, чтобы понять это, это объяснено в лучший способ Филиппа Роберта.