Я наткнулся на этот тест производительности, сказав, что RegExps в JavaScript не обязательно медленный: http://jsperf.com/regexp-indexof-perf
Но есть одна вещь, которую я не понял: два случая связаны с чем-то, что я считаю абсолютно одинаковым:
RegExp('(?:^| )foo(?: |$)').test(node.className);
И
/(?:^| )foo(?: |$)/.test(node.className);
По-моему, эти две строки были в точности одинаковыми, вторая - своего рода сокращение для создания объекта RegExp. Тем не менее, он в два раза быстрее, чем первый.
Эти случаи называются "динамическое регулярное выражение" и "встроенное регулярное выражение".
Может ли кто-нибудь помочь мне понять разницу (и разрыв в производительности) между этими двумя?