如何修改JavaScript函数内变量使其在函数结束后不恢复原值?
问题描述
给出如下JavaScript脚本:
function changeValue(x){ x = 30; } let a = 3; changeValue(a); console.log(a);
上述代码实际输出结果为3,但预期输出是30。已知问题产生的原因,现需了解如何修改代码,让函数内对变量的修改在函数结束后不会恢复?同时已知JavaScript没有显式指针,且不想通过全局变量名或对象方式修改值,是否有其他解决办法?
解决办法
可以通过返回修改后的值并重新赋值的方式实现,这是符合要求的直接方案:
基础修改版本
function changeValue(x){ return 30; } let a = 3; a = changeValue(a); console.log(a); // 输出30
带逻辑的灵活版本
如果需要基于传入值做动态修改,也可以调整为:
function changeValue(x){ // 示例:在传入值基础上做修改 return x + 27; } let a = 3; a = changeValue(a); console.log(a); // 输出30
JavaScript的原始类型(数字、字符串、布尔值等)采用按值传递的方式,函数内部的参数只是外部变量的副本,修改副本不会影响原变量。因此要让外部变量更新,只能通过函数返回新值,再由外部变量接收这个返回值来完成同步。
内容的提问来源于stack exchange,提问作者ichbinjay
相关产品推荐
相关产品推荐

