"未定义"在函数结束时返回

时间:2017-11-29 16:00:15

标签: javascript

有"未定义"出现在第二个函数的末尾,我无法弄清楚原因。 这是我的代码

function makeLine(length) {
    var line = "";
    for (var j = 1; j <= length; j++) {
        line += "* ";
    }
    return line + "\n";
}

// your code goes here.  Make sure you call makeLine() in your own code.
function buildTriangle(len){
    for(var i=1;i<=len; i++){
        console.log(makeLine(i));
    }
}

// test your code by uncommenting the following line
console.log(buildTriangle(10));

3 个答案:

答案 0 :(得分:7)

如果您没有明确地从函数中返回值,会隐式返回undefined

您记录buildTriangle的返回值,即undefined

console.log(buildTriangle(10));

See MDN for more info.

答案 1 :(得分:1)

Timo回答为什么。这是一种方法来修复代码,以便返回结果。

定义一个数组,并在循环的每次迭代中将makeLine的结果推送到数组。然后返回连接的数组。

function buildTriangle(len){
  var arr = [];
  for (var i=1;i<=len; i++){
    arr.push(makeLine(i))
  }
  return arr.join('');
}

<强> find_by_ios_predicate_tests.py

答案 2 :(得分:0)

在最后一行删除控制台。如果您调用任何函数,则无需控制台。

function makeLine(length) {
    var line = "";
    for (var j = 1; j <= length; j++) {
        line += "* ";
    }
    return line + "\n";
}

// your code goes here.  Make sure you call makeLine() in your own code.
function buildTriangle(len){
    for(var i=1;i<=len; i++){
        console.log(makeLine(i));
    }
}

// test your code by uncommenting the following line
buildTriangle(10)

如果要在console.log中调用该函数。然后从buildTriangle函数返回一些内容。

function buildTriangle(len){
    for(var i=1;i<=len; i++){
        console.log(makeLine(i));
    }
      return 'done';
}
console.log(buildTriangle(10));