在javascript上跨函数传递变量

在javascript上跨函数传递变量,javascript,Javascript,我试图在函数之间传递变量, 差不多 函数一(){ 变量x=1 } 函数二(){ 变量y=x+1; } 警报(y)您需要通过将变量声明提取到函数外部来提升作用域。也就是说,在函数之外定义x和y。请注意,您仍然可以从函数中更新它们的值。但是,不要忘记,实际上还需要调用这两个函数 这可以从以下几点看出: var x,y; 功能一(){ x=1; } 函数二(){ y=x+1; } 一个(); 二(); 控制台日志(y)您需要通过将变量声明提取到函数外部来提升作用域。也就是说,在函数之外定义x和y。

我试图在函数之间传递变量,
差不多

函数一(){
变量x=1
}
函数二(){
变量y=x+1;
}

警报(y)您需要通过将变量声明提取到函数外部来提升作用域。也就是说,在函数之外定义
x
y
。请注意,您仍然可以从函数中更新它们的值。但是,不要忘记,实际上还需要调用这两个函数

这可以从以下几点看出:

var x,y;
功能一(){
x=1;
}
函数二(){
y=x+1;
}
一个();
二();

控制台日志(y)您需要通过将变量声明提取到函数外部来提升作用域。也就是说,在函数之外定义
x
y
。请注意,您仍然可以从函数中更新它们的值。但是,不要忘记,实际上还需要调用这两个函数

这可以从以下几点看出:

var x,y;
功能一(){
x=1;
}
函数二(){
y=x+1;
}
一个();
二();

控制台日志(y)如果您确实希望在一个方法中声明变量,请返回它

函数一(){
var x=1;
返回x;
}
函数二(){
var x=1();
变量y=x+1;
返回y;
}

警惕(两个())如果您确实希望在一个方法中声明变量,请返回它

函数一(){
var x=1;
返回x;
}
函数二(){
var x=1();
变量y=x+1;
返回y;
}

警惕(两个())您当前的方式在函数范围内有x和y,这意味着另一个函数不知道它存在。此外,根据函数的作用命名函数也是一种很好的做法。3种简单的方法来实现这一点

  • 全球的
  • Params
  • 内联

  • 在函数范围之外设置两个变量,任何函数都可以访问
    var x,y;
    函数赋值函数(){
    x=1;
    }
    函数addOne(){
    y=x+1;
    }
    赋值一();
    addOne();
    
    控制台日志(y)您当前的方式在函数范围内有x和y,这意味着另一个函数不知道它存在。此外,根据函数的作用命名函数也是一种很好的做法。3种简单的方法来实现这一点

  • 全球的
  • Params
  • 内联

  • 在函数范围之外设置两个变量,任何函数都可以访问
    var x,y;
    函数赋值函数(){
    x=1;
    }
    函数addOne(){
    y=x+1;
    }
    赋值一();
    addOne();
    
    控制台日志(y)似乎希望在两个函数之间共享状态,而不是传递参数。因此,面向对象模式似乎是合适的

    类的东西{
    构造函数(){
    这个.x=1;
    }
    一(){
    归还这个.x;
    }
    二(){
    返回这个.x+1;
    }
    }
    常数t=新事物();
    console.log(t.one());
    
    console.log(t.two())似乎希望在两个函数之间共享状态,而不是传递参数。因此,面向对象模式似乎是合适的

    类的东西{
    构造函数(){
    这个.x=1;
    }
    一(){
    归还这个.x;
    }
    二(){
    返回这个.x+1;
    }
    }
    常数t=新事物();
    console.log(t.one());
    
    console.log(t.two())如果您想在函数之间共享变量,但不想在全局范围内声明它们,可以使用如下闭包:

    (function() {
      var x, y;
    
      function one() {
        var x = 1
      }
    
      function two() {
        var y = x + 1;
      }
      one();
      two();
      alert(y);
    })();
    

    如果您想在函数之间共享变量,但不想在全局范围内声明它们,可以使用如下闭包:

    (function() {
      var x, y;
    
      function one() {
        var x = 1
      }
    
      function two() {
        var y = x + 1;
      }
      one();
      two();
      alert(y);
    })();
    

    请告诉我们您打算如何调用这些函数。如果不调用它们,则不会执行任何分配,也不会创建任何值。另外,请解释您为什么希望/需要这样做?让函数接受参数和返回值是更好的设计。请告诉我们您打算如何调用函数。如果不调用它们,则不会执行任何分配,也不会创建任何值。另外,请解释您为什么希望/需要这样做?让函数接受参数和返回值是更好的设计。