操作DOM时Javascript是同步的吗?

Is Javascript synchronous when manipulating the DOM?

我有一个带有类型字段输入的表单。我有几个单选按钮,根据我点击的是哪个,输入类型字段中的值将被更新。之后,我将调用一个 Javascript 函数来执行某些操作,该函数将在输入字段中使用更新后的数量(文本)。

当然,将该数量传递给函数本身更安全,但是我可以依赖 Javascript 首先更新 DOM,显示更新输入字段值,然后,通过 document.getElementById("input-quantity").value 检索它并在函数中使用它?或者,如果 DOM 的刷新需要时间,函数能否获得 "old" 值?

如您所说,最好将值传递给函数。

但是,是的,设置输入值是同步的;根据您的描述,您将可靠地获得跨浏览器的更新值。其他 DOM 操作(插入元素、移除元素、移动元素)也是同步的,尽管在您的 JavaScript 代码完成之前用户可能看不到结果,让浏览器使用线程重新绘制显示。 (尽管 JavaScript 本质上不是单线程的,浏览器使用单个主 UI 线程来 运行 您的 JavaScript 代码,并且通常也使用该线程来更新显示。 )