0

如何在函数二中重用变量 y?我已阅读有关此主题的信息,但最简单的解决方案是什么?

function one(){
    y = 2 
}

function two(){
    x = y * 2 
}​
4

4 回答 4

8

做你要求的最直接的方法是将它们放在另一个函数中,你在声明它时立即调用它(注意关闭函数()之后}),并在新函数的范围内声明变量。两个内部函数都可以查看和修改它们的值。

您还需要在包装函数之外声明包含内部函数本身的变量,以便它们对想要调用它们的代码可见。

var one, two;

(function() {
  var x, y;

  one = function() {
    y = 2;
  };

  two = function() {
    y = y * 2;
  };
}())

one();
two();

另一种常见的方法是使用对象及其属性而不是变量:

var myObject = {
  one: function() {
    this.y = 2;
  },
  two: function() {
    this.x = this.y * 2;
  }
}

myObject.one();
myObject.two();
于 2012-08-26T16:48:29.567 回答
0

确实,我想封装每个函数的逻辑。

var y=3;
var x=3;

function one(){
    var y = 2;
    return y;

}

function two(){
    var y = one();
    var x = y * 2;
    return x;
}


document.write(one());
document.write(two());​

如果上面的代码解决了我的问题,那么当函数一有多个变量时它是如何工作的。假设我在函数二中需要 50 个唯一变量。

于 2012-08-26T18:15:17.573 回答
0

声明要在其他函数中使用的全局变量,例如

var y=0;
function one()
{
    y=2 

}

function two()
{
    x=y*2 
}​
于 2012-08-26T16:47:30.500 回答
0

大概是你想封装每个函数的逻辑,你想让函数二使用函数一的返回值?这样的事情可能是有道理的:

function one(){
    var y = 2;
    return y;
}

function two(){
    var y = one();
    var x = y * 2;
}​

如果你想完成一些不同的事情,那么你需要添加更多细节。

请注意,通过省略var您是在全局隐式声明您的变量,这是一个禁忌。

于 2012-08-26T16:52:38.537 回答