为何JavaScript中等号反转后执行结果不同?DOM操作代码解析
为什么反转DOM赋值的等式就失效了?
这俩代码的核心问题出在赋值的单向性和JavaScript的参数传递规则上:
赋值是单向行为,不存在双向同步
等号=的作用很明确:把右侧的值赋值给左侧的变量或对象属性,完全没有“两边自动同步”的逻辑。- 能正常工作的代码里,
text.textContent = chng是把传入的"asasdf"赋值给DOM元素的textContent属性——这直接修改了DOM节点的内容,页面自然会更新。 - 失效的代码里,
chng = text.textContent是把DOM当前的文本内容(初始可能为空)赋值给函数内部的chng变量,这个操作只在函数内部生效,跟DOM本身没有任何反向关联,当然不会改变页面内容。
- 能正常工作的代码里,
字符串这类基本类型是按值传递的
调用changeText("asasdf")时,函数参数chng拿到的是这个字符串的副本,属于函数内部的局部变量。给chng重新赋值只会修改这个副本,既不会影响外部传入的原始字符串,也没有操作DOM的属性——相当于你在函数里自己定义了个变量玩,根本没碰页面上的DOM元素。
说白了,要修改页面上的文字,就得把你要的内容赋值给DOM的textContent属性;反过来赋值只是在函数里存了个DOM当前的文本值,完全达不到修改页面的目的。
内容的提问来源于stack exchange,提问作者Ömer Düzgün
相关产品推荐
相关产品推荐

