Javascript 切割线

Javascript 切割线,javascript,string,Javascript,String,我遵循《雄辩的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 str

我遵循《雄辩的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'end,参数是'ven'。我需要它来切片字符串,但indexOf方法的第二个参数似乎没有任何作用。如果我删除它,我会得到相同的结果。这是为什么?

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

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


在本例中,开始字符串和结束字符串不同,因此结果相同。但是,由于
indexOf
方法将搜索更多的字符串(从0开始,而不是从第四个字符开始),因此它的运行速度会稍微慢一些。

您所说的
我得到相同的结果是什么意思?上面的代码应该返回
zumaele
如果我从endAt变量离开startAt,我仍然会得到相同的结果。我不知道为什么。啊!你是说如果我不使用startAt参数,它必须从第0个位置看,如果我不使用startAt参数,它将从给定的位置开始。所以这一切都与性能有关吗?@Marciano不仅如此,a)非常重要。尝试
var-betweenIn=between('Inazuma-Eleven','a','a'),您将看到它的功能。谢谢!现在我明白了!