关于setTimeout的知识点以及setTimeout(0)的使用场景

本文探讨了JavaScript中setTimeout的原理,特别是setTimeout(0)的使用场景。解释了在onkeydown、onkeypress和onkeyup事件中的行为差异,以及setTimeout如何在事件处理中发挥作用。文章指出,JavaScript是单线程执行的,setTimeout会将任务放入任务队列,等待主线程空闲时执行,因此setTimeout(0)并不意味着立即执行,而是尽可能快地插入队列。
摘要由CSDN通过智能技术生成

试试以下例子:

<!DOCTYPE html>
<html>
<head>
    <title>demo</title>
</head>
<body>

<input type="text" onkeydown="show()">
<script type="text/javascript">
  function show(val) {
      setTimeout( () => {
          console.log('inner',document.getElementsByTagName('input')[0].value)
      },0)
      console.log('outer',document.getElementsByTagName('input')[0].value)
  }
</script>
</body>
</html>

输出结果如下:

当把事件名改成keyup的时候,输入和input的value值就是同步的:

<input type="text" onkeyup="show()">
<script type="text/javascr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值