我最近学习JavaScript并碰到这段代码。调用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
你只需阴影变量名。将它们重命名为内部函数中的其他内容,并且它工作正常。 – deceze
'sayIntro'的变量仍然在匿名函数的范围内 - 这不是问题。问题是有一组全新的参数具有相同的名称,这些名称不是传递值,并且因为它们具有相同的名称,所以它们隐藏了其他变量。 'return function(){'解决。 – Ryan
谢谢,但为什么这个问题得到减号?问是不是很愚蠢? –