javascript regexp.compile()是如何工作的?
可能重复:javascript regexp.compile()是如何工作的?,javascript,regex,compilation,Javascript,Regex,Compilation,可能重复: Javascript被认为是一种解释语言,那么编译方法是如何为正则表达式工作的呢。它真的是编译模式还是滥用符号。Javascript确实是一种解释语言,但所有浏览器处理Javascript的方式都不同。 例如,Google Chrome在第一次执行时就竭尽全力编译JS代码;底层的V8引擎可以提高Gmail等大型web应用程序的性能 因此,Chrome编译所有JS代码,而不仅仅是正则表达式,也许有人会说这是对符号的滥用 Mozilla文档中提到了正则表达式,但是SpiderMonke
Javascript被认为是一种解释语言,那么编译方法是如何为正则表达式工作的呢。它真的是编译模式还是滥用符号。Javascript确实是一种解释语言,但所有浏览器处理Javascript的方式都不同。 例如,Google Chrome在第一次执行时就竭尽全力编译JS代码;底层的V8引擎可以提高Gmail等大型web应用程序的性能 因此,Chrome编译所有JS代码,而不仅仅是正则表达式,也许有人会说这是对符号的滥用 Mozilla文档中提到了正则表达式,但是SpiderMonkey/TraceMonkey是一个生成字节码的JIT编译器 我还没有找到有关Internet Explorer如何处理事情的信息,我假设每件事都有一点,这取决于版本号
真正有趣的问题是:你为什么需要这条信息?如果你想优化你的Javascript代码,我建议在所有你想支持的浏览器中测试不同的方法,并最终使用性能最好的方法。这应该比试图理解不同版本的内部浏览器功能更进一步。动词“compile”本身并不意味着机器代码。“RegExp方法:compile方法已被弃用。”@James McLaughlin:当我试图找到答案时,我发现了这篇文章。文章本身说“compile()方法用于在脚本执行期间编译正则表达式。”在Chrome上,当我在编译后第一次使用test时,有时会得到不同的结果。例如,patt.test(x)->true,patt.test(x)->false,patt.test(x)->false等等。是的,我没有使用“g”标志。compile在JavaScript 1.5中被贬低了