Czy V8 buforuje automatycznie wyrażenia regularne?
Wiem więc, że w Javascript tworzenie instancji regex powoduje automatyczne kompilowanie i jeśli ten regex jest przechowywany w zmiennej, zostanie ponownie użyty bez rekompilacji. Przykład:
var re = /[Ff]oo|[Bb]ar/;
"Foo".match(re); // ["Foo"]
"Baz".match(re); // null
Czy jednak zduplikowane wyrażenia regularne są ponownie kompilowane lub czy V8 (Chrome / Node.js) inteligentnie używa ich ponownie (podobnie jak PHP z funkcjami preg_ *)?
function isFooBar(str) {
return str.match(/[Ff]oo|[Bb]ar/);
}
isFooBar("Foo"); // ["Foo"]
isFooBar("Baz"); // null
Aby wyjaśnić, wiem, że pierwszy przykład daje jedną kompilację wyrażenia regularnego. Ale co z drugim przykładem?