我有一个函数,它接受一个字符串和一个char的输入,它将计算该字符串中char出现的次数。
.SI
这样做很好,但这花了我一些时间才弄明白。它的第二手性质让我总是把括号放在for循环中,但是当我这样做时,函数不能像我预期的那样工作,就像这样:
strip()
为什么括号会以这种方式起作用?
答案 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代码。