2014-09-24 66 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

相關問題