我正在制作一个聊天系统,当用户聊天时,它会清除输入。变量msg
是用户键入的文本。
let msg = document.querySelector("input").value;
我认为msg = "";
可以用于清除输入,但事实并非如此。但由于某种原因document.querySelector("input").value = "";
起了作用。它们不是完全一样吗?
没有相同的消息只分配值而不是元素。如果u说let msg = document.querySelector("input")
和msg.value="";
,它会起作用,因为msg是这里的元素。在您的代码中,msg是值(而不是元素的值(。
输入元素的value
属性实际上是getter/setter,类似于元素的innerHTML
。当您为属性赋值时,setter将运行并设置DOM中元素的状态。当您通过访问.value
获得属性时,getter将运行并检索DOM中元素的状态。
为了设置一个新的值,你必须让setter运行,这需要分配给属性,例如
document.querySelector("input").value = "";
除了元素之外,在几乎所有情况下,重新分配变量本身永远不会有任何副作用。无论您在做什么,单独使用msg = ''
都不会有任何作用,除非稍后使用msg
。