为什么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 
     } 
    } 
} 
+0

要清楚,你没有得到一个错误,说变量不能被重新分配,但想知道为什么它没有改变? –

+0

@Teemu没有那个问题。 OP没有真正发布问题。 – jdmdevdotnet

+0

@Teemu我应该放哪里? – MongoliaOba

尝试使用这样的:

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 
     } 
    } 
}