2016-09-26 59 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() 
相关问题