【问题标题】:How javascript regexp.compile() works? [duplicate]javascript regexp.compile() 如何工作? [复制]
【发布时间】:2012-03-29 11:59:13
【问题描述】:

可能重复:
Javascript: what's the point of RegExp.compile()?

Javascript 被称为解释型语言,那么 compile 方法实际上是如何用于正则表达式的。它是真的编译模式还是只是符号的滥用。

【问题讨论】:

  • 动词“编译”本身并不意味着机器码。
  • "RegExp 方法:编译方法已弃用。"
  • @James McLaughlin:当我试图找到答案时,我找到了这篇文章。 w3schools.com/jsref/jsref_regexp_compile.asp 文章本身说“compile() 方法用于在脚本执行期间编译正则表达式。”
  • 在 Chrome 上,编译后第一次使用测试时有时会得到不同的结果。例如,patt.test(x)->true、patt.test(x)->false、patt.test(x)->false 等。是的,我没有使用“g”标志。跨度>
  • 编译在 JavaScript 1.5 中被弃用

标签: javascript regex compilation


【解决方案1】:

确实,Javascript 是一种解释性语言,但所有浏览器对 Javascript 的处理方式都不同。 例如,谷歌浏览器在第一次执行时不遗余力地编译 JS 代码;底层 V8 引擎 translates JS into machine code 以提高 Gmail 等大型 Web 应用程序的性能。

因此,Chrome 编译所有 JS 代码而不仅仅是正则表达式,也许有人会说这是一种符号的滥用。

Mozilla 文档说 Firefox uses compilation 的正则表达式,但话又说回来,SpiderMonkey / TraceMonkey 是一个生成字节码的 JIT 编译器。

我还没有找到有关 Internet Explorer 如何处理事情的信息,我假设所有内容都有一点点,具体取决于版本号。

真正有趣的问题是:您为什么需要这些信息?如果你想优化你的 Javascript 代码,我建议在你想支持的所有浏览器中对不同的方法进行基准测试,并最终使用性能最好的一种。这应该让您比尝试了解不同版本的内部浏览器功能更进一步。

【讨论】:

    猜你喜欢
    • 2014-05-30
    • 2013-09-26
    • 2018-05-06
    • 2018-02-22
    • 1970-01-01
    • 2011-08-09
    • 2019-01-24
    • 2013-05-04
    • 2013-05-25
    相关资源
    最近更新 更多