JavaScript:如何在子函数中修改父函数变量并返回更新值?
解决子函数修改父级变量的问题
你当前代码的问题在于,wuzi是数字这类基本类型,传递给函数时是值传递——函数内部的wuzi只是原变量的一个副本,修改它不会影响外部的原变量。下面是几种可行的解决方法:
方法一:让函数返回修改后的值,外部重新赋值
这是最清晰的写法,符合函数的单一职责原则:
let wuzi = 20; console.log(wuzi); // 20 wuzi = testWuzi(wuzi); console.log(wuzi); // 30 function testWuzi(wuzi) { return 30; // 也可根据实际逻辑返回动态修改后的值 }
方法二:用对象包裹变量(引用类型传递)
基本类型是值传递,而对象是引用传递,函数内部修改对象的属性会直接影响外部的原对象:
let obj = { wuzi: 20 }; console.log(obj.wuzi); // 20 testWuzi(obj); console.log(obj.wuzi); // 30 function testWuzi(obj) { obj.wuzi = 30; }
方法三:直接访问外部作用域的变量(不推荐)
如果函数和变量在同一个作用域,可以不用传参直接修改,但这种写法会提升代码耦合度,降低可读性,尽量少用:
let wuzi = 20; console.log(wuzi); // 20 testWuzi(); console.log(wuzi); // 30 function testWuzi() { wuzi = 30; }
内容的提问来源于stack exchange,提问作者EGxo
相关产品推荐
相关产品推荐

