【发布时间】:2016-10-25 09:08:37
【问题描述】:
我已经搜索了互联网,试图找到这个问题的好答案。我主要发现的是在全局范围内移动变量的建议,或者将函数用作我想在其中使用变量的函数的参数,但没有解释它是如何工作的
为了解释我的困境,假设我们有这段代码:
function foo(){
var x = 2;
}
function bar(){
var z = 2;
}
function compare(foo,bar){
if ( z === x ) {
console.log("text");
}
}
这是我面临的问题。我上面写的代码是否正确,如果我调用 compare() 函数,它应该控制台记录“文本”?
【问题讨论】:
-
x&z是函数的本地,不能从函数外部访问。 -
在询问之前你没有测试过你的实际代码吗?它不会起作用。
-
我知道这行不通。我只是以代码为例,说明我如何从寻找答案的过程中理解它。
-
在 JavaScript 中,每个函数都有自己的作用域,因此函数的本地变量无法在该函数之外访问。在您的情况下,
x和y分别是foo和bar函数的本地函数,因此它们只能在这些函数范围内访问,并且在compare函数中调用它们会引发错误,因为 @ 987654329@和y在这个函数中没有定义。
标签: javascript function scope