常用的JavaScript实现是否使用string实习?

常见的JavaScript引擎,例如V8和WebKit的JavaScriptCore,是否使用JavaScriptstring的string实习 ? 或者他们实际上保持内存中的多个相同的string的实例?

是。 一般来说,JS源代码中的任何string,标识符或其他常量string都是被禁用的。 然而,实施细节(例如实际上是什么)是不同的,以及发生实习的时间。

请注意,string值与string对象不同,string对象不会被拦截,因为这将是根本上不正确的行为。

http://jsperf.com/strinterning

是的,在Chrome中,没有在极光15和FF 13! 比较两个string比在Firefox中比较两个指针要慢85%。 但是Chrome的速度是相同的,这表明它正在比较两个指针。

也许在Mozilla的JS引擎团队应该检查他们的代码…