Javascript JS在函数中使用变量名而不是它们的值

Javascript JS在函数中使用变量名而不是它们的值,javascript,variables,Javascript,Variables,我在尝试给数组(或变量)一个新值时遇到了一个问题。在函数内部,我希望在执行函数时为参数指出的变量指定一个新值 var a = 0; var b = 0; function editvariable (target, newValue) { var target = newValue; } editvariable(a, 4); 在本例中,我想将a的值更改为4,但它只会生成一个名为target的新函数。a是在函数范围之外定义的,因此您可以简单地设置a=newValue 但是,为什么要

我在尝试给数组(或变量)一个新值时遇到了一个问题。在函数内部,我希望在执行函数时为参数指出的变量指定一个新值

var a = 0;
var b = 0;

function editvariable (target, newValue) {
    var target = newValue;
}

editvariable(a, 4);

在本例中,我想将
a
的值更改为4,但它只会生成一个名为target的新函数。

a
是在函数范围之外定义的,因此您可以简单地设置
a=newValue

但是,为什么要为一个简单赋值语句所能做的事情创建一个函数呢

如果您确实想让
目标
重新分配
a
,则必须返回结果

var a=0;
var b=0;

function editvariable(target,newValue){
    target=newValue;
    return target; //return the assignment
}

a = editvariable(a,4)

只需删除
var

那么
a=4
呢?我觉得你可能有一个更广泛的目标要实现,但是如果没有更多的细节就很难说了。原始变量不是通过引用传递的,而是通过值传递的,这意味着你不能像那样传递变量并更改原始变量等。你也可以返回值并将其分配回变量。因此
a=editvariable(a,4)
editvariable
内部,您需要
返回目标值(或者
newValue
,因为它是相同的)。当然,这仍然只是一个简单的赋值,但我假设你有一个(实)函数,它不仅仅是赋值。我猜他们很可能也想做
editvariable(b,4)
,但这是开销。无论哪种方式,在函数中指定变量仍然有效,但参数不是原始变量的引用。他将不得不返回它并为它分配
a
,这是一个好的想法,但我不确定这是否会满足OP的要求,因为需要传递值。
var target=newValue;