【问题标题】:Why return doesn’t break the loop and function?为什么 return 不会破坏循环和函数?
【发布时间】:2021-08-25 17:36:59
【问题描述】:

我是 javascript 新手,正在尝试构建一个三角形。这是一段代码。

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

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

console.log(buildTriangle(10))


看来return会破坏循环和函数。

那为什么return不破坏函数继续循环呢?

如果我将第二个函数稍微更改为,为什么结果会完全不同

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

【问题讨论】:

  • 您的退货不在循环内。
  • 您的循环条件不合逻辑 (>= ?)
  • 抱歉应该是
  • 同样在 tour buildTriangle 函数中,您有“j>=length”,但您提供的长度为 10 并将 j 初始化为 1,因此它永远不会运行。
  • Then why return doesn't break the function and continue to loop? return 您是否期望它的行为有所不同以及为什么/如何?

标签: javascript function for-loop


【解决方案1】:

您的第一个函数和第二个函数之间的区别在于,在第一个函数中您使用了“+=”,它将 makeLine 函数添加到“x”中的所有内容中。在您的第二个函数中,您只使用了“=”,因此您将 x 声明为该 makeLine 函数,换句话说,这意味着您将覆盖它。

【讨论】:

    【解决方案2】:

    return 语句不会中断循环,因为它超出了 for 语句的范围。设置为在循环后返回一个字符串。

    我认为您的代码有什么问题是您的 for 方法在 BuildTriangle 函数上的声明。看看吧:

    for (j = 1; j >= length; j++){
        x += makeLine(j);
    }
    

    它的写法是在j大于等于length时调用makeLine函数。由于 j 从 1 开始,它永远不会调用 makeLine 函数。您可以通过反转符号来修复,如下所示:

    for (j = 1; j <= length; j++){
        x += makeLine(j);
    }
    

    【讨论】:

      猜你喜欢
      • 2021-03-14
      • 1970-01-01
      • 2020-10-04
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多