javascript return of recursive function

前端 未结 4 1903
别那么骄傲
别那么骄傲 2020-12-06 11:22

Hate to open a new question for an extension to the previous one:

function ctest() {
    this.iteration = 0;
    this.func1 = function() {
        var result         


        
相关标签:
4条回答
  • 2020-12-06 11:33

    You have to return all the way up the stack:

    func2.call(this, sWord);
    

    should be:

    return func2.call(this, sWord);
    
    0 讨论(0)
  • 2020-12-06 11:34

    Your outer function doesn't have a return statement, so it returns undefined.

    0 讨论(0)
  • 2020-12-06 11:37

    keep it simple :)

    your code modified in JSFiddle

    iteration = 0;
    func1();
    
        function  func1() {
            var result = func2("haha");
            alert(iteration + ":" + result);
        }
    
        function func2 (sWord) {
            iteration++;
    
            sWord = sWord + "lol";
            if ( iteration < 5 ) {
                func2( sWord);
            } else {
    
                return sWord;
            }
    
        return sWord;
        }
    
    0 讨论(0)
  • 2020-12-06 11:46

    You need to return the result of the recursion, or else the method implicitly returns undefined. Try the following:

    function ctest() {
    this.iteration = 0;
      this.func1 = function() {
        var result = func2.call(this, "haha");
        alert(this.iteration + ":" + result);
      }
      var func2 = function(sWord) {
        this.iteration++;
        sWord = sWord + "lol";
        if ( this.iteration < 5 ) {
            return func2.call(this, sWord);
        } else {
            return sWord;
        }
      }
    }
    
    0 讨论(0)
提交回复
热议问题