Используя jsPerf , получается, что пропуск .indexOf()
примерно на 23% более эффективен, чем его включение более 500 000 итераций (11.67
против 8.95
операций в секунду):
Без indexOf()
:
var str = "test";
for (var i = 0; i < 500000; i++) {
var test = str.split('.');
}
С .indexOf()
:
var str = "test";
for (var i = 0; i < 500000; i++) {
if (str.indexOf('.')) {
var test = str.split('.');
} else {
var test = str;
}
}
http://jsperf.com/split-and-split-indexof
EDIT
Хмм ... Если следующая строка:
if (str.indexOf('.') > -1)
http://jsperf.com/split-and-split-indexof-with-indexof-check
Или любое другое сравнение, это выглядит немного быстрее (примерно на 69%).
Единственная причина, по которой я могу думать, это то, что запуск .split()
для каждой переменной будет выполнять две функции для каждого значения (поиск, затем разделение) вместо одной, когда это необходимо. Обратите внимание, эта последняя часть является лишь предположением.