Javascript中返回和闭包函数的分析
高级绕道!它与闭包本身无关,它不知道如何取标题。今天,一个刚刚学习JS的朋友给了我一段代码,问为什么这个方法没有执行。代码如下:
复制代码代码如下所示:
功能makefunc(x){
返回函数(){
返回x;
}
}
警报(makefunc(0));
事实上,它不是不做,但这里的朋友的含义警报应该是0,而不是函数(){返回x;}。
脚本没有错误,只是不返回,退出当前函数,从函数返回一个值。如果返回是一个函数,那么返回就是函数本身。
它是可能的修改代码,警报(makefunc(0)()):
复制代码代码如下所示:
功能makefunc(x){
返回(函数(){())
返回x;
});
}
警报(makefunc(0)());
如果要返回函数的结果,则应首先执行函数,例如:
复制代码代码如下所示:
功能makefunc(x){
返回(函数(){())
返回x;
});
}
警报(makefunc(0));
这里是一个匿名函数,
复制代码代码如下所示:
(函数(){())
返回x;
});
第一个括号是一个匿名函数,第二个括号用来调用匿名函数,你可以把所需的参数传递给第二个括号:
复制代码代码如下所示:
函数(x,y){
警报(x + y);
})(2, 3);