以下是代码:
function b() {
console.log(x);
};
function a() {
var x= 1;
b();
}
a();
//the output is : x is not defined!
任何人都可以帮忙解释为什么它会输出undefined吗?我以为它会输出1.为什么函数b()不能得到变量x?
答案 0 :(得分:0)
您必须将x变量作为参数传递:
function b(x) {
console.log(x);
};
function a() {
var x= 1;
b(x);
}
a();
答案 1 :(得分:0)
您通过实际调用函数来混淆闭包。如果function b
内有function a
,那么您可以像这样访问x
。
function a() {
var x= 1;
function b() {
console.log(x); // print out 1
};
b();
}
答案 2 :(得分:0)
如果var
定义 in a function
,则var
只能在该功能中使用。如果var
定义在之外的function
,那么它可以在任何地方使用。您的var x =1
已在 function a()
内定义,因此只能在 function a()
内使用。要解决您的代码,只需将var x= 1
移到 function a()
之外即可。这是代码:
function b() {
console.log(x);
}
var x= 1;
function a() {
b();
}
或者,我建议你改用它。它要短得多:
var x= 1
function b() {
console.log(x);
}