JavaScript 单一函数的三角形
JavaScript triangle with single function
我正在尝试在 Javascript 中制作三角形,通常我不得不使用 2 个函数来制作一个。不过,我最近尝试创建一个具有单一功能的,并且效果很好。但是我不确定为什么或如何每次通过 for 循环在 运行 之后开始一个新行,因为我从未在单个函数的代码中的任何地方提到“\n”。谁能解释为什么它仍然有效?谢谢。
function tri(num){
var star = '';
for(var i = 1; i <= num; i++){
var star = star + " *";
console.log(star)
}
}
tri(10)
这是我用 2 个函数完成的方法
function horiztonal(num){
var star = "";
for(var i = 0; i <= num; i++){
var star = star + " *"
}
console.log(star)
}
function buildTri(num){
var star = "";
for(var i = 0; i < num; i++){
var star = star + horiztonal(i)
}
console.log(star)
}
buildTri(10)
在 运行 2 函数尝试之后还有一串重复 "undefined",所以如果有人能解释一下,我将非常感激。再次感谢。
- Console.log 打印您在每次迭代时传递的参数
- 函数return未定义。 console.log 没有明确地 return 任何东西。
也许这个例子会有所帮助。
function tri(num){
var star = '';
for(var i = 1; i <= num; i++){
var star = star + " *";
console.log(star)
}
return "Finished"; //explicitly returning
}
tri(10)
现在我们明确地return输入一个值。
你得到 "undefined" 打印的原因是你混淆了 return 字符串的函数和写入 console.log() 的函数。如果你仔细研究 horizontal() ,你会发现它正在写入控制台......没有 return 值。但是,如果仔细研究 tri() 函数,您会发现它期望 horizontal() 成为 returning 字符串。即这两个假设是不一致的。因此,您得到的行为是 console.log 的输出以及未定义的串联,因为您的函数没有 return 任何值。
我已进行以下更正:
- 取得了
horizontal()
return星排
- 删除过度使用
var
关键字。你到处都有 var star
,而且,实际上,你只声明一次,到处都在使用它
- 现在我们正在 returning 字符串,我必须在字符串中添加一个换行符(在 console.log 给你一个免费的换行符之前)
- 我做了一些小的格式和间距调整
- 将您的变量从
star
重命名为 stars
(为了正确起见,因为该字符串将包含星星的集合)
function horiztonal(num) {
var stars = "";
for (var i = 0; i <= num; i++) {
stars = stars + " *"
}
return stars;
}
function buildTri(num) {
var stars = "";
for (var i = 0; i < num; i++) {
stars = stars + horiztonal(i) + "\n";
}
console.log(stars)
}
buildTri(10);
我正在尝试在 Javascript 中制作三角形,通常我不得不使用 2 个函数来制作一个。不过,我最近尝试创建一个具有单一功能的,并且效果很好。但是我不确定为什么或如何每次通过 for 循环在 运行 之后开始一个新行,因为我从未在单个函数的代码中的任何地方提到“\n”。谁能解释为什么它仍然有效?谢谢。
function tri(num){
var star = '';
for(var i = 1; i <= num; i++){
var star = star + " *";
console.log(star)
}
}
tri(10)
这是我用 2 个函数完成的方法
function horiztonal(num){
var star = "";
for(var i = 0; i <= num; i++){
var star = star + " *"
}
console.log(star)
}
function buildTri(num){
var star = "";
for(var i = 0; i < num; i++){
var star = star + horiztonal(i)
}
console.log(star)
}
buildTri(10)
在 运行 2 函数尝试之后还有一串重复 "undefined",所以如果有人能解释一下,我将非常感激。再次感谢。
- Console.log 打印您在每次迭代时传递的参数
- 函数return未定义。 console.log 没有明确地 return 任何东西。
也许这个例子会有所帮助。
function tri(num){
var star = '';
for(var i = 1; i <= num; i++){
var star = star + " *";
console.log(star)
}
return "Finished"; //explicitly returning
}
tri(10)
现在我们明确地return输入一个值。
你得到 "undefined" 打印的原因是你混淆了 return 字符串的函数和写入 console.log() 的函数。如果你仔细研究 horizontal() ,你会发现它正在写入控制台......没有 return 值。但是,如果仔细研究 tri() 函数,您会发现它期望 horizontal() 成为 returning 字符串。即这两个假设是不一致的。因此,您得到的行为是 console.log 的输出以及未定义的串联,因为您的函数没有 return 任何值。
我已进行以下更正:
- 取得了
horizontal()
return星排 - 删除过度使用
var
关键字。你到处都有var star
,而且,实际上,你只声明一次,到处都在使用它 - 现在我们正在 returning 字符串,我必须在字符串中添加一个换行符(在 console.log 给你一个免费的换行符之前)
- 我做了一些小的格式和间距调整
- 将您的变量从
star
重命名为stars
(为了正确起见,因为该字符串将包含星星的集合)
function horiztonal(num) {
var stars = "";
for (var i = 0; i <= num; i++) {
stars = stars + " *"
}
return stars;
}
function buildTri(num) {
var stars = "";
for (var i = 0; i < num; i++) {
stars = stars + horiztonal(i) + "\n";
}
console.log(stars)
}
buildTri(10);