Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript regexp.compile()是如何工作的?_Javascript_Regex_Compilation - Fatal编程技术网

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中被贬低了