Qual é o valor padrão de lastIndexOf?
-
27-10-2019 - |
Pergunta
string.lastIndexOf(searchValue[, fromIndex])
MDN diz que o valor padrão fromIndex
é igual astring.length
, no entanto, realmente acho que é string.length-1
Mas não importa o que eu acho ... preciso que alguém confirme qual é o valor padrão de fromIndex
Aqui está o que eles dizem:
"Pode ser qualquer número inteiro entre 0 e o comprimento da string. O valor padrão é o comprimento da string."
Solução
De acordo com ECMAScript 5, será o length
da String.
15.5.4.8 String.prototype.lastIndexOf (searchString, position)
Se
position
forundefined
, olength
do valor String é assumido, de modo a pesquisar toda a String....
- Chame
CheckObjectCoercible
passando este valor como seu argumento.- Deixe
S
ser o resultado de chamarToString
, fornecendo a este valor como seu argumento.- Seja
searchStr
ToString(searchString)
.- Seja
numPos
ToNumber(position)
. (Se a posição for indefinida, esta etapa produzirá o valorNaN
).- Se
numPos
forNaN
, deixe pos ser+∞;
, caso contrário, deixepos
serToInteger(numPos)
.- Seja
len
o número de caracteres emS
.- Deixe
start
min(max(pos, 0), len)
.- Seja
searchLen
o número de caracteres emsearchStr
.- Retorne o maior número inteiro não negativo possível k não maior que start de modo que k + searchLen não seja maior que len, e para todos os inteiros não negativos j menor que searchLen, o caractere na posição k + j de S é o mesmo que o caractere em posição j de searchStr; mas se não houver tal número inteiro k, então retorne o valor -1.
Outras dicas
Não importa, absolutamente.Como o índice é baseado em zero, string.length
e string.length-1
incluirão toda a string.
Você pode testar as diferenças no resultado de maneira bastante simples:
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));
Isso alerta 16, 16, 16, -1.Assim, se você estiver muito preocupado com alguns ciclos extras sendo usados quando um useragent executa .lastIndexOf()
, você pode passar .length-1
e fazer com que ele gaste alguns ciclos extras analisando o parâmetro extra.
Se fromIndex for tão grande ou maior que o comprimento da string, a função retornará -1.
Caso contrário, a string.substring (fromIndex) pesquisa a partir do final da substring.