Каково значение по умолчанию LastIndexOF?
-
27-10-2019 - |
Вопрос
string.lastIndexOf(searchValue[, fromIndex])
Мд Говорит, что fromIndex
значение по умолчанию равно string.length
, однако, я действительно думаю, что это string.length-1
Но не имеет значения, что я думаю ... мне нужен кто -то, чтобы подтвердить, что такое значение по умолчанию fromIndex
Вот что они говорят:
«Это может быть любое целое число между 0 и длиной строки. Значение по умолчанию - длина строки».
Решение
Согласно Ecmascript 5, это будет length
строки.
15.5.4.8 string.prototype.lastindexof (SearchString, Position)
Если
position
являетсяundefined
,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
.- Вернуть максимально возможное неотрицательное целое число k не больше, чем запуск, так что K+ Searchlen не больше, чем Len, и для всех нетригативных целых чисел J меньше, чем Sypeclen, персонаж в положении K+ j of S такой же, как и персонаж в позиции j of Searchstr; Но если нет такого целого числа k, то верните значение -1.
Другие советы
Это не имеет значения, вообще. Поскольку индекс на основе нуля, оба 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. Таким образом, если вы очень обеспокоены тем, что используются лишние лишние циклы, когда пользовательский агент работает .lastIndexOf()
, вы можете пройти .length-1
И пусть он потратит несколько дополнительных циклов, анализируя дополнительный параметр.
Если от Index такой же большой или больше длины строки, функция возвращает -1.
Если нет, то строка