Сделал несколько измерений в хроме.
var x = '1',
times = 10000,
start1 = +new Date();
for (var i=0; i<times; i++) {
if (x == 'a' || x == 'b' || x == 'c') {
}
}
var time1 = +new Date() - start1,
start2 = +new Date();
for (var i=0; i<times; i++) {
if (x.match(/^(?:a|b|c)$/)) {
}
}
var time2 = +new Date() - start2;
console.log(time1, time2)
В среднем, первый вариант (10000 тысяч обычных сравнений) выполняется за 30-45 мс. Второй — 20-25.
Если x
будет равно 'a'
, то каждый раз будет будет проверяться только x == 'a'
и тогда первый вариант проходит за 25-35 мс. Т.е. в данном конкретном примере выигрывают регекспы.
Но в других случаях результат может быть другим.