根据 MDN的RegExp指南,正则表达式字面量在编译时被编译,而通过调用构造函数创建的RegExp对象却不会被编译。
我的问题是,编译是什么时候进行的?由于字面量具有独特的语法,在解析期间被识别为正则表达式。这将使得它可以被编译一次,并在每次评估时重复使用结果,从而导致两个示例具有(几乎)相同的速度。
我的问题是,编译是什么时候进行的?由于字面量具有独特的语法,在解析期间被识别为正则表达式。这将使得它可以被编译一次,并在每次评估时重复使用结果,从而导致两个示例具有(几乎)相同的速度。
var str = "Hello World";
// Example 1
var regExp1 = /[aeiou]+/gi;
for(var i = 0; i < 1000; ++i)
regExp1.exec(str);
// Example 2
for(var j = 0; j < 1000; ++j)
/[aeiou]+/gi.exec(str);
有没有任何想法,这是否被任何JavaScript引擎在实践中使用?