为什么我的递归函数局部变量在每次调用后都没有重置?

时间:2016-07-12 15:43:20

标签: javascript node.js recursion

我在node.js函数中有这组代码(这是一个非常简化的版本)。我运行buildWorkout()并调用递归函数createWorokout(),后者又调用它自己几次,然后将生成的训练传递回buildWorkout()的回调。

问题是如果我再次运行buildWorkout()vars.workout变量将包含我上次运行它时的确切数据,因此该函数只会添加它。

非常奇怪,我不经常采取递归方法,我相信那是我的错误所在。我该如何修复我的代码?

var buildWorkout = function( pool, cb ) {
    var vars = null

    var vars = {
        workout: config.warmup,
        numOfExercises: 4
    }

    return createWorkout( pool, vars, cb )
}

var createWorkout = function( pool, vars, cb ) {

    sqlCall( pool, function( exercise ) {
        if ( exercise == null ) {
            createWorkout( pool, vars, cb )
        } else {
            vars.workout.push( exercise )

            if ( vars.workout.length = vars.numOfExercises ){
                return cb( vars.workout ) //call callback with return value
            } else {
                return createWorkout( pool, vars, cb ) //recurssion
            }
        }
    } )

}

0 个答案:

没有答案