此刻我正在学习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>
我想知道我做错了什么以及如何解决,因为我总是“未定义”或一无所获。 我也知道这可能是一个简单的错误,但我仍然是一个初学者。
答案 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++
}
现在,它会构建一个output
。 x
变量是一个计数器。当x
为1
时,它将output
的结果添加到makeLine(1) + '<br>'
中,然后它将增加1并再次运行,直到x
的值是与widest
相同。然后它将返回output
。
由于document.write()
编写html而不是纯文本。您必须使用换行符,而不是换行符。