2016-09-26 65 views
0

我正在一個項目上工作,爲了縮短代碼量,我編寫了一個函數來同時調用它們。它看起來像這樣function Function(peram1) {peram1 = peram1 += 5};而且我這樣稱呼它Function(someVariable)我的問題是我需要從函數內部更改變量some​​Variable,即使peram1的值僅僅是someVariable的值,但不能直接更改它。我調用了多個這些函數,所以我不能簡單地從內部調用實際的變量名稱。如何更改在參數中調用的變量JavaScript

var someVariable = 5; 
var someSeperateVariable = 8; 

function Function(peram1) { 
    peram1 = peram1 += 5; 
}; 

Function(someVariable); 
Function(someSeperateVariable); 
console.log(someVariable, someSeperateVariable); 
+0

什麼是你'someVariable'的類型?對象,數字,字符串,數組? –

+1

你能舉一個例子嗎,我真的不明白這個問題。 – putvande

+0

該變量是一個int – TheChosenWhanMC

回答

0

您可以使用一個對象存儲變量,將屬性名稱和對象傳遞給函數

var obj = {someVariable:5, someSeparateVariable:8}; 

function fn(prop, obj) { 
    obj[prop] += 5; 
}; 

fn("someVariable", obj); 
fn("someSeparateVariable", obj); 
console.log(obj.someVariable, obj.someSeparateVariable); 
0

考慮從功能

var peram1 = Function(Peram1); 

返回一個值的情況下,peram1另一種選擇是不是一個對象 - 是包裝peram1與對象:

var objContainPeram1 = { peram1: peram1 } 

Function (objContainPeram1) { 
    objContainPeram1.peram1 = objContainPeram1.peram1 + 5 
} 
+0

這需要我做一個包含變量的對象嗎? – TheChosenWhanMC

+0

是的,看我的編輯。 – chenop

0

另一種解決辦法是包裝在一個函數代碼來創建一個封閉:

function closure() { 

    var someVariable = 5; 
    var someSeperateVariable = 8; 

    function foo() { 
     someVariable += 5; 
    }; 

    console.log(someVariable) 
    foo() 
    console.log(someVariable) 

} 

closure() 
相關問題