在Javascript中使用来自其他函数的变量

在Javascript中使用来自其他函数的变量,javascript,function,scope,Javascript,Function,Scope,我在网上搜索,试图找到这个问题的好答案。我主要发现的是在全局范围内移动变量的建议,或者使用函数作为我想要在其中使用变量的函数的参数,但没有解释如何工作 为了解释我的困境,假设我们有以下代码: function foo(){ var x = 2; } function bar(){ var z = 2; } function compare(foo,bar){ if ( z === x ) { console.log("text"); } } 这就是我面临的问题。我上面写的代码正确

我在网上搜索,试图找到这个问题的好答案。我主要发现的是在全局范围内移动变量的建议,或者使用函数作为我想要在其中使用变量的函数的参数,但没有解释如何工作

为了解释我的困境,假设我们有以下代码:

function foo(){
 var x = 2;
}

function bar(){
 var z = 2;
}

function compare(foo,bar){
 if ( z === x ) {
  console.log("text");
}
}

这就是我面临的问题。我上面写的代码正确吗?如果我调用compare()函数,它应该控制台记录“text”?

用globel变量声明,它很容易传递另一个函数

varx;
变量y;
函数foo(){
x=2;
}
功能条(){
z=2;
}
函数比较(){
如果(z==x){
控制台日志(“文本”);
}
}
foo()
bar()

比较()
x
&
z
是函数的本地代码,无法从函数外部访问。那么,在询问之前,您没有测试过您的实际代码吗?不行,我知道不行。我只是举了一个例子,说明我是如何从搜索答案的过程中理解它的。在JavaScript中,每个函数都有自己的作用域,因此函数的局部变量在此函数之外是无法访问的。在您的情况下,
x
y
分别是
foo
bar
函数的本地函数,因此它们只能在这些函数范围内访问,在
compare
函数中调用它们将引发错误,因为
x
y
未在此函数中定义。因此,这是唯一的选项,全局声明变量?这是最常用且简单的方法。或者使用with。您希望将数据保存到本地并检索数据。