Javascript函数范围和参数

时间:2017-03-01 03:56:15

标签: javascript

以下是代码:

function b() {
  console.log(x);
};
function a() {
  var x= 1;
  b();
}
a();
//the output is : x is not defined!

任何人都可以帮忙解释为什么它会输出undefined吗?我以为它会输出1.为什么函数b()不能得到变量x?

3 个答案:

答案 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);
}