为什么var不能重新分配?
问题描述:
我调试过这个功能,我发现var indexOfString不能重新指定,为什么?为什么var不能重新分配?
function occurrencesOfSubstring(fullString, substring){
var countOfString = 0
var indexOfString = 0
while(true){
indexOfString = fullString.indexOf(substring,indexOfString)
if (indexOfString > 0){
countOfString += 1
}else{
return countOfString
}
}
}
答
尝试使用这样的:
var indexOfString = -1;
...
indexOfString = fullString.indexOf(substring,indexOfString + 1);
否则,你继续你每次都要经过循环的时间找到相同的索引。
另外,请记住,索引是从零开始的,所以如果字符串的“第一个”字符为您的子字符串开始匹配,您将得到0
作为结果。所以你可以改变你的条件:
if (indexOfString >= 0){
countOfString += 1
}else{
return countOfString
}
答
谢谢你们,我知道问题在哪里。
function occurrencesOfSubstring(fullString, substring){
var countOfString = 0
var indexOfString = 0
while(true){
indexOfString = fullString.indexOf(substring,indexOfString + 1)
if (indexOfString > 0){
countOfString += 1
}else{
return countOfString
}
}
}
要清楚,你没有得到一个错误,说变量不能被重新分配,但想知道为什么它没有改变? –
@Teemu没有那个问题。 OP没有真正发布问题。 – jdmdevdotnet
@Teemu我应该放哪里? – MongoliaOba