在函数中处理全局变量

时间:2016-05-26 11:28:18

标签: javascript function

如果标题与我的问题不符,我们很抱歉,因为我无法用文字解释,只能举例说明。

这是一个非常简单的例子,我的代码不一样且更长:

var i=0;
first();
function first()
{
    i=1;
    second(i);
}
function second(number)
{
    number=2;
}

我已尝试过此代码,它返回1.

我想要的是修改我的全局变量,对我的函数说第二个"嘿,你总是会修改全局变量,但是我在参考中传递给你的是你必须修改的那个&#34 34;

如果有人有答案,那就太好了!他可以节省很多行:D

提前致谢。

2 个答案:

答案 0 :(得分:0)

将var名称作为字符串传递可以解决您的问题......

var globalVar = 0;

first();
function first () {
  globalVar = 1;
  changeGlobal('globalVar');
}
function changeGlobal(v) {
  window[v] = 2;
}

document.body.innerHTML = 'globalVar: '+globalVar;

答案 1 :(得分:0)

整数等原始值在Javascript中按值传递。这意味着first()将始终将i设置为1. Second()基本上是no-op。

这应该实现你的目标:

var i=0;
first();
function first()
{
    i=1;
    i=second(i);
}
function second(number)
{
    number=2;
    return number;
}