2014-09-24 68 views
-2

尝试为数组(或变量)提供新值时遇到问题。在函数内部,我想在执行函数时给参数指出的变量赋予一个新的值。JS在函数中使用变量名称而不是它们的值

var a = 0; 
var b = 0; 

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

editvariable(a, 4); 

在这个例子中,我要的a值更改为4,但只会让一个名为目标的新功能。

+0

'a = 4'?我觉得你可能有更广泛的目标,但是没有更多的细节,很难说。 – 2014-09-24 18:56:12

+4

原始变量不是通过引用传递,而是仅通过值传递,这意味着您无法像这样传递变量并更改原始文件等。 – adeneo 2014-09-24 18:56:23

+0

您也可以仅返回值并将其分配回变量。因此,'a = editvariable(a,4)'和'editvariable'内需要'返回目标'(或'newValue',因为它们是相同的)。当然,这只不过是简单的赋值而已,但我认为你有一个(真正的)函数不仅仅是指定一个值。 – 2014-09-24 18:59:29

回答

1

a被定义出来的功能范围,所以你可以简单地设置a = newValue

但是你为什么要做出什么简单的赋值语句可以做一个函数?

如果你真的target重新分配a,你必须返回结果。

var a=0; 
var b=0; 

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

a = editvariable(a,4) 
+0

我猜他们可能也想做'editvariable(b,4)' – 2014-09-24 18:58:41

+0

最有可能,但是它是开销。无论哪种方式,在函数内分配变量仍然有效,但该参数不是原始变量的引用。他将不得不退还,并给它分配'a' – 2014-09-24 19:01:04

0
var target=newValue; 

只是删除var

+0

好的想法,但我不确定会因为价值传递而做OP的任务。 – therealrootuser 2014-09-24 19:05:46

相关问题