JavaScript中?与||的运算符优先级问题咨询

问题原因说明
你遇到的问题核心是JavaScript中引用类型的传递逻辑(这类场景在引用类型相关代码里很常见):
- 对象、数组这类引用类型的数据,当作为参数传入函数时,函数接收的不是数据的副本,而是指向该数据在内存中存储位置的引用。
- 如果你的代码里是直接修改了参数对象的属性(比如执行了
o.value = 'some new value'这类语句),这个修改会直接作用于原对象——因为函数参数和原变量指向的是内存里的同一个对象。 - 只有当你在函数内给参数重新赋值一个全新的对象(比如
o = { value: 'some new value' }),原对象才不会被影响,此时参数的引用指向了新的内存地址,和原对象不再关联。
你实际输出some new value,说明代码属于第一种情况:直接修改了对象的属性,导致原对象的内容被改变,最终输出的就是修改后的值。
内容的提问来源于stack exchange,提问作者Dilip
相关产品推荐
相关产品推荐

