【发布时间】:2021-03-27 06:08:24
【问题描述】:
这是我的代码:
function triangle1(n , shape){
let ajib =[];
for (let row = 1; row <= n; row++) {
let b ="";
let a="";
for (let space = 1; space <= n - row; space++) {
b= b + " ";
}
for (let star = 1; star <= row; star++) {
a = a + shape + " "; ///" " will make an Equilateral triangle
}
let c = b + a;
console.log(c);
ajib.push(c);
//return c ;
}
console.log(ajib)
}
console.log(triangle1(5,"a"))
这是我的输出:
a
a a
a a a
a a a a
a a a a a
[ ' a ', ' a a ', ' a a a ', ' a a a a ', 'a a a a a ' ]
undefined
首先:我不知道这个undefined是从哪里来的!
我怎样才能摆脱它?
第二:当我使用 return c; 而不是 console.log(c) 输出每一行时,我得到一个错误的结果,例如:
a
为什么会发生这种情况,我该如何解决?
【问题讨论】:
-
索引通常从零开始。您是否在
for语句中从 1 开始超出了数组长度? -
undefined是来自triangle1()的返回,这确实没有定义。您可以通过调用triangle1(5,"a")而不是console.log(triangle1(5,"a"))来摆脱它。 -
我认为未定义是预期的。你是在像 repl 这样的网站上开发吗?奇怪的结果似乎是因为你之前记录了这封信,然后你提前返回,导致 console.log(ajib) 永远不会被调用。
-
我建议使用
debugger语句并调试代码 - 记录undefined的位置应该很明显 -
@Lain 你提出了一个好方法,但现在当我在函数中使用
return c而不是console.log(c)时,三角形不会按原样显示!
标签: javascript