切割线

时间:2014-02-02 23:13:38

标签: javascript string

我正在遵循Eloquent Javascript一书中的例外情况,并提出了这段代码:

function between(string, start, end)
    {
        // Start AT the last character position of the start string

        var startAt = string.indexOf(start) + start.length;

        //Count the position of the end string first character
        var endAt = string.indexOf(end, startAt);

        return string.slice(startAt, endAt);

    }

    var betweenIn = between('Inazuma Eleven', 'Ina', 'ven');
    console.log(betweenIn);

代码工作正常。它在中间提取了一段字符串。现在我试着真正理解这篇文章,但有一点我不清楚。变量endAt检查字符串的第三个给定参数的第一个字符位置,(在这种情况下我的字符串是'Inazuma Eleven'结束参数是'ven'。我需要那个用于切片的字符串,但它似乎是第二个参数indexOf方法没有做任何事情。如果我删除它,我会得到相同的结果。为什么会这样?

1 个答案:

答案 0 :(得分:2)

indexOf的第二个参数默认为0.这是字符串中将开始查找匹配子字符串的位置。

在起始字符串结束后开始确保a)如果起始字符串和结束字符串相同,则结束字符串与其第一个实例不匹配,并且b)您必须扫描较少的目标字符串,以便代码运行得更快。

在这种情况下,您的开始和结束字符串是不同的,因此结果是相同的。但是,由于indexOf方法将搜索更多的字符串(从0开始而不是从第4个字符开始),因此它的运行速度会慢一些。