一个Start/End JavaScript函数的值怎么可能等于它应该介于两者之间的索引?

一个Start/End JavaScript函数的值怎么可能等于它应该介于两者之间的索引?,javascript,substring,Javascript,Substring,参考以下链接 如果“开始”大于“结束”,它将交换两个参数: var str = "Hello world!"; var res = str.substring(4, 1); res的结果将是: 厄尔 我对这个描述练习有点困惑,因为它说明了子字符串从两个索引之间的字符串中提取字符,而不包括“end”本身。因此,如果索引是4和1,表示“o”和“e”,为什么新字符串不等于“ll”,因为这些值在1和4之间,不包括“end”。当“e不是介于1和4之间,但是1的值时,结果怎么可能是“ll”?请帮助我理解错

参考以下链接

如果“开始”大于“结束”,它将交换两个参数:

var str = "Hello world!";
var res = str.substring(4, 1);
res的结果将是:

厄尔


我对这个描述练习有点困惑,因为它说明了子字符串从两个索引之间的字符串中提取字符,而不包括“end”本身。因此,如果索引是4和1,表示“o”和“e”,为什么新字符串不等于“ll”,因为这些值在1和4之间,不包括“end”。当“e不是介于1和4之间,但是1的值时,结果怎么可能是“ll”?请帮助我理解错误的地方!

数组从0开始。字符串是字符数组。因此H=0。e=1,l=2,l=3,o=4。 子字符串不包括结束,但包括开始。
因此,在1和4之间,您会得到“ell”=1(start)23。

我想您了解子字符串是如何工作的。您真的在问为什么文档如此混乱,或者?@ControlAltDel,没错!谢谢!中的描述应该是“子字符串方法在“start”前面的索引和后面的索引之间提取字符串中的字符。”“结束”值。不这样说绝对是愚蠢的!你不觉得吗?不这样说是愚蠢的吗?大概在这种情况下,我认为示例通常比描述更有用。这很棘手,因为你真正想指定的是字符之间的空空间的索引,而不是字符索引本身,你知道我的意思吗?因此,中的描述应该是“子字符串方法提取“开始”之前的索引和“结束”之后的索引之间的字符串中的字符“value”表示如果使用交换的版本。我绝对不建议这样使用它。最好的方法是使用正确的方法,使用子字符串(1,4)而不是子字符串(4,1),因为子字符串(4,1)将被简单地解释为具有子字符串(1,4)。正确的描述可能是:“子字符串方法提取“开始”索引和“结束”值之前的索引之间的字符串中的字符”太糟糕了,网页不能像维基百科那样编辑……JavaScript已经很难学了,为什么了解它的人不能正确地解释它!?我花了一些时间才从链接上的信息中理解出来……真是生气!谢谢你的帮助!有时它肯定会令人困惑。没问题,很高兴我能帮忙。