我如何循环功能

时间:2018-12-21 14:53:54

标签: javascript

此刻我正在学习javascript,我想问你一个我要完成的练习。这是我应该完成的测验:

https://classroom.udacity.com/courses/ud803/lessons/a7c5b540-51a6-44dc-b2f2-515c9dd6ca4f/concepts/c746623a-eefd-4518-9890-2c5f320b0282 这是我的代码我只是不明白我在做什么错。有人可以向我解释。

<html>
<head></head>
<body>
<script>

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

 function buildTriangle(widest) {      
    var x = makeLine(1);
    while(x <= widest){
       return x;
        x++;
    }
 }

 document.write(buildTriangle(10));

 </script>
  </body>
  </html>

我想知道我做错了什么以及如何解决,因为我总是“未定义”或一无所获。 我也知道这可能是一个简单的错误,但我仍然是一个初学者。

5 个答案:

答案 0 :(得分:0)

在返回语句之后,任何指令都不会执行

答案 1 :(得分:0)

将功能更改为此

function buildTriangle(widest) {      
    var x = makeLine(1);
    while(x <= widest){
           // putting return here would make function execution to stop 
           // and return the value to the callee, thus not executing 
           // any statement after this.
       x++;//this making this an unreachable code
    }
    return x;
}

答案 2 :(得分:0)

函数buildTriangle(widest)中存在一些问题。

var x = makeLine(1);

这将始终将x设置为makeLine(1)在while循环中执行x ++。

此外,x ++在return语句之后,因此代码将永远无法到达它。

希望这会有所帮助。

答案 3 :(得分:0)

这就是在*上实际写入document的方式。我已经修改了您的buildTriangle的工作方式,并保持makeLine完整。

(function() {
    function makeLine(length) {
        var line = "";
        for (var j = 1; j <= length; j++) {
           line += "* ";
        }
        return line + "<br/>";
     }
     
     function buildTriangle(widest) {
        for(var x = 1; x <= widest; x++){
            // Moved write inside the loop
            // since you want to write each line here
            document.write(makeLine(x));
        }
     }

     buildTriangle(10);
})();
<html>
<head></head>
<body>
</body>
</html>

答案 4 :(得分:0)

你快到了。

对于makeline()函数,只需删除\n,使其看起来像这样:

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

对于buildTriange(),您会遇到一些问题:1)var x = makeLine(1);意味着x将始终等于*,因为那是makeLine(1)将返回; 2)return语句使x++无法访问。

考虑一下:

function buildTriangle(widest) {
  var output = '';
  var x = 1;
  while(x <= widest){
    output += makeLine(x) + '<br>';
    x++
  }

现在,它会构建一个outputx变量是一个计数器。当x1时,它将output的结果添加到makeLine(1) + '<br>'中,然后它将增加1并再次运行,直到x的值是与widest相同。然后它将返回output

由于document.write()编写html而不是纯文本。您必须使用换行符,而不是换行符。