为什么var不能重新分配?

时间:2017-09-07 18:18:39

标签: javascript loops variables var let

我调试了这个函数,我发现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
        }
    }
}

2 个答案:

答案 0 :(得分:0)

尝试使用:

var indexOfString = -1;
...
    indexOfString = fullString.indexOf(substring,indexOfString + 1);

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

另外,请记住索引是从零开始的,因此如果字符串的“first”字符开始匹配您的子字符串,那么结果将得到0。所以你可以改变你的条件:

    if (indexOfString >= 0){
        countOfString += 1
    }else{
        return countOfString
    }

答案 1 :(得分:0)

谢谢你们,我知道问题在哪里。

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