Я играю с setTimeout
в Javascript. Я смущен тем, как это работает. У меня есть следующий код:
<input type="button" value='click'>
<script>
var input = document.getElementsByTagName('input')[0]
input.onclick = function() {
setTimeout(function() {
input.value +=' input'
}, 0)
}
document.body.onclick = function() {
input.value += ' body'
}
</script>
Когда мы щелкаем функцию, она добавляет ввод текста к элементу кнопки. Я понимаю, что это происходит, потому что сначала запускается родительское (тело) событие, а при следующем такте таймера выполняется дочернее (входное) событие, поскольку оно было отправлено позже в очередь событий.
Теперь я попробовал следующий код:
var input = document.getElementsByTagName('input')[0]
document.body.onclick = function() {
setTimeout(function() {
input.value +=' body'
}, 0)
}
input.onclick = function() {
setTimeout(function() {
input.value +=' input'
}, 0)
}
Это добавляет тело текстового ввода к элементу кнопки. Как здесь определяется порядок выполнения, когда оба тайм-аута установлены на 0? В каком порядке они помещаются в очередь событий в этом случае?