string.lastIndexOf(searchValue[, fromIndex])
MDN说fromIndex
默认值等于string.length
,但是,我认为它是string.length-1
但是我的想法并不重要......我需要有人确认fromIndex
以下是他们的意见:
“它可以是0到字符串长度之间的任何整数。默认值是字符串的长度。”
答案 0 :(得分:2)
根据ECMAScript 5,它将是String的length
。
15.5.4.8 String.prototype.lastIndexOf(searchString,position)
如果
position
为undefined
,则假定为String值的length
,以便搜索所有字符串。...
- 调用
CheckObjectCoercible
将此值作为参数传递。- 让
S
成为调用ToString
的结果,并将此值作为其参数。- 让
searchStr
成为ToString(searchString)
。- 让
numPos
为ToNumber(position)
。 (如果未定义位置,则此步骤将生成值NaN
)。- 如果
numPos
为NaN
,请将pos设为+∞;
,让pos
为ToInteger(numPos)
。- 让
len
为S
中的字符数。- 让
start
min(max(pos, 0), len)
。- 让
searchLen
为searchStr
中的字符数。- 返回不大于start的最大可能的非负整数k,使得k + searchLen不大于len,并且对于小于searchLen的所有非负整数j,S的位置k + j处的字符与at处的字符相同searchStr的位置j;但如果没有这样的整数k,则返回值-1。
醇>
答案 1 :(得分:0)
根本没关系。由于索引从零开始,string.length
和string.length-1
都将包含整个字符串。
修改强>
您可以非常简单地测试结果的差异:
var s = '01923456789abcdef';
alert(s.lastIndexOf('f',s.length+1));
alert(s.lastIndexOf('f',s.length));
alert(s.lastIndexOf('f',s.length-1));
alert(s.lastIndexOf('f',s.length-2));
警告16,16,16,-1。因此,如果您非常关注在useragent运行.lastIndexOf()
时使用的额外几个周期,您可以传递.length-1
并让它花费一些额外的周期来解析额外的参数。
答案 2 :(得分:0)
如果fromIndex大于或大于字符串长度,则函数返回-1。
如果没有,string.substring(fromIndex)会从子字符串的末尾进行搜索。