JavaScript中使用DOM方法获取元素是否属于assign-by-reference?
DOM元素变量赋值的本质
- 你的理解完全正确:变量
mySearchIcon并没有持有HTML元素本身,而是持有该DOM元素对象的引用。 - 这属于你所说的
assign-by-reference(按引用赋值)范畴,原因是:DOM元素在JavaScript中属于对象类型(复合值),和数组、自定义对象遵循相同的赋值规则:- 当你通过
document.querySelector获取DOM元素时,该方法返回的是内存中对应DOM对象的引用; - 赋值操作只是把这个引用复制给变量
mySearchIcon,变量本身并不存储整个DOM元素的内容; - 如果将这个变量赋值给另一个变量(比如
let iconCopy = mySearchIcon),两个变量会指向同一个DOM元素对象,修改其中一个变量对元素的属性(如iconCopy.style.display = 'none'),会直接影响原始变量对应的元素,因为操作的是同一个共享对象。
- 当你通过
额外补充:JavaScript里严格来说是按共享赋值(call-by-sharing),但日常开发中常简化为“按引用赋值”,两者的核心逻辑和你理解的复合值赋值行为一致——变量存储的是指向对象的引用,而非对象副本。
内容的提问来源于stack exchange,提问作者Lotus
相关产品推荐
相关产品推荐

