为什么不能重新分配 var?

why the var cannot be reassign?

我调试这个函数,我发现var indexOfString在找到一个索引后无法更新,为什么?

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);

否则,每次循环都会找到相同的索引。

此外,请记住索引是从零开始的,因此如果字符串的 "first" 字符开始匹配您的子字符串,您将得到 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
        }
    }
}