lastIndexOf的默认值是多少?

时间:2012-02-18 01:46:36

标签: javascript string indexof

string.lastIndexOf(searchValue[, fromIndex])

MDNfromIndex默认值等于string.length,但是,我认为它是string.length-1

但是我的想法并不重要......我需要有人确认fromIndex

的默认值是什么

以下是他们的意见:

  

“它可以是0到字符串长度之间的任何整数。默认值是字符串的长度。”

3 个答案:

答案 0 :(得分:2)

根据ECMAScript 5,它将是String的length

  

15.5.4.8 String.prototype.lastIndexOf(searchString,position)

     

如果positionundefined,则假定为String值的length,以便搜索所有字符串。

     

...

     
      
  1. 调用CheckObjectCoercible将此值作为参数传递。
  2.   
  3. S成为调用ToString的结果,并将此值作为其参数。
  4.   
  5. searchStr成为ToString(searchString)
  6.   
  7. numPosToNumber(position)。 (如果未定义位置,则此步骤将生成值NaN)。
  8.   
  9. 如果numPosNaN,请将pos设为+∞;,让posToInteger(numPos)
  10.   
  11. lenS中的字符数。
  12.   
  13. start min(max(pos, 0), len)
  14.   
  15. searchLensearchStr中的字符数。
  16.   
  17. 返回不大于start的最大可能的非负整数k,使得k + searchLen不大于len,并且对于小于searchLen的所有非负整数j,S的位置k + j处的字符与at处的字符相同searchStr的位置j;但如果没有这样的整数k,则返回值-1。
  18.   

答案 1 :(得分:0)

根本没关系。由于索引从零开始,string.lengthstring.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)会从子字符串的末尾进行搜索。