嘗試爲數組(或變量)提供新值時遇到問題。在函數內部,我想在執行函數時給參數指出的變量賦予一個新的值。JS在函數中使用變量名稱而不是它們的值
var a = 0;
var b = 0;
function editvariable (target, newValue) {
var target = newValue;
}
editvariable(a, 4);
在這個例子中,我要的a
值更改爲4,但只會讓一個名爲目標的新功能。
嘗試爲數組(或變量)提供新值時遇到問題。在函數內部,我想在執行函數時給參數指出的變量賦予一個新的值。JS在函數中使用變量名稱而不是它們的值
var a = 0;
var b = 0;
function editvariable (target, newValue) {
var target = newValue;
}
editvariable(a, 4);
在這個例子中,我要的a
值更改爲4,但只會讓一個名爲目標的新功能。
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)
我猜他們可能也想做'editvariable(b,4)' – 2014-09-24 18:58:41
最有可能,但是它是開銷。無論哪種方式,在函數內分配變量仍然有效,但該參數不是原始變量的引用。他將不得不退還,並給它分配'a' – 2014-09-24 19:01:04
'a = 4'?我覺得你可能有更廣泛的目標,但是沒有更多的細節,很難說。 – 2014-09-24 18:56:12
原始變量不是通過引用傳遞,而是僅通過值傳遞,這意味着您無法像這樣傳遞變量並更改原始文件等。 – adeneo 2014-09-24 18:56:23
您也可以僅返回值並將其分配回變量。因此,'a = editvariable(a,4)'和'editvariable'內需要'返回目標'(或'newValue',因爲它們是相同的)。當然,這只不過是簡單的賦值而已,但我認爲你有一個(真正的)函數不僅僅是指定一個值。 – 2014-09-24 18:59:29