将函数作为返回值返回有什么好处?

如题:经常见到别人写代码 喜欢将函数作为返回值返回出来

    var res = test()
    console.log((res.next())())
    function test() {
        var a = 10;
        return {
            next(){
                return function () {
                    return a+1
                }
            }
        }
    }
    

我觉得这样写就能解决问题:

var res = test()
console.log(res)
function test() {
    var a = 10;
    return a+1
}   

请问第一种写法有什么好处?有什么使用场景?

阅读 5.2k
4 个回答

他每次next值都会网上加 你的每次都是11吧

这个实际上是属于callback函数,也就是回调函数,设置一个函数,当满足一定条件的时候就触发函数。应用比较广泛的有前端界面用来接收数据等数据交互的场景。如ajax用来接收数据的时候就是用的回调函数。如图中的xhr.onreadystatechange所赋值的属性就是如此。图片描述

这一串代码是登陆的场景,其中就使用了callback进行了数据监听和处理。

这样可以作为闭包使用,a的值永远是运行后的值。

不过也挺奇怪的,为什么next中还要再返回一个function,其实只需要返回next就行了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题