调用Javascript函数返回具有未定义值的函数

时间:2017-10-13 10:43:19

标签: javascript function

我最近在学习JavaScript并遇到了这段代码。

function sayIntro(name,age){

var address = "TX";

return function(name,age,address){
console.log("I am "+ name + " \nI am "+ age + " \nfrom "+address);
};

}

sayIntro("john",27)();

根据我的理解,结果未定义,因为 在返回函数范围内,以前的变量不可用。我仍然如何得到输出?

I am john
I am 27
from TX 

1 个答案:

答案 0 :(得分:0)

内部函数的参数会影响外部函数参数和变量。你可以只访问内部函数中的变量,因为当它试图找到一个变量时,它会从它的作用域开始,如果没有找到则转到外部作用域,在这种情况下是外部函数的作用域并找到它们。

但是如果你在内部函数中声明参数,它们是成立的,并且因为你没有为它们传递值,它们的值是undefined。所以你得到undefined

或者从内部功能中删除它们

return function() {
   console.log("I am "+ name + " \nI am "+ age + " \nfrom "+address);
};

或者只需删除address并调用内部函数并将参数传递给它。

return function(name, age) {
   console.log("I am "+ name + " \nI am "+ age + " \nfrom "+address);
};

...

sayIntro()("john",27);

示例

function sayIntro(name,age){

   var address = "TX";

   return function(){
      console.log("I am "+ name + " \nI am "+ age + " \nfrom "+address);
   };

}

sayIntro("john",27)();