JavaScript,for循环括号导致错误?

时间:2017-06-24 07:14:02

标签: javascript

我有一个函数,它接受一个字符串和一个char的输入,它将计算该字符串中char出现的次数。

.SI

这样做很好,但这花了我一些时间才弄明白。它的第二手性质让我总是把括号放在for循环中,但是当我这样做时,函数不能像我预期的那样工作,就像这样:

strip()

为什么括号会以这种方式起作用?

4 个答案:

答案 0 :(得分:1)

  

为什么括号会以这种方式起作用?

因为你在for循环块中有return语句。在块结束时,函数返回。

function count(str, letter) {
    var num = 0;
    for (var i = 0; i < str.length; i++) {  // block start
        if (str.charAt(i) == letter)
            num += 1;
        return num;                                        // exit function in first loop
    }                                       // block end
}

答案 1 :(得分:0)

它不是大括号(括号是[]),它是return语句的位置。 return语句位于循环的第一次迭代中(i = 0)。如果你添加一组额外的大括号(如下所示),它会变得更加明显。

function count(str, letter) {
    var num = 0;
    for (var i = 0; i < str.length; i++) {
        if (str.charAt(i) == letter) {
            num += 1;
        }
        return num; // <-- This return exits the function
    }
}

console.log(count("BBC", "B"));
//outputs 1

答案 2 :(得分:0)

在第一个中,return语句在for循环之外,但在第二个中,return语句在for循环中。这产生了不同。 请尝试以下代码。

    function count(str, letter) {
      var num = 0;
      for (var i = 0; i < str.length; i++) {
        if (str.charAt(i) == letter)
          num += 1;
        }
        return num;
    }

console.log(count("BBC", "B"));

答案 3 :(得分:0)

你的循环在第一次迭代后终止。 因此,如果您尝试在“XBBBB ... B”中出现“B”,它将返回0。 尝试调试代码并将括号放在正确的位置。 学习使用浏览器调试js代码。