【问题标题】:javascript: recurring strings and performancejavascript:循环字符串和性能
【发布时间】:2016-02-08 05:15:31
【问题描述】:
我有 Java 背景。
在那里,尤其是在 JDK 1.2 时代,必须进行节俭的字符串管理。所以我们会在任何地方都使用常量,并尽量减少字符串的使用,尤其是当用作在整个代码中重复的键时(尤其是在循环中)。
不过,在 javascript 中,我很少看到人们将常量用于字符串 - 似乎在整个代码中都使用字符串的情况相当普遍,即使对于我见过的相对高质量的代码也是如此。
是不是因为javascript在处理字符串的时候没有问题?它可能有一些智能内存管理或其他东西吗?其实我的直觉告诉我它没有......
【问题讨论】:
标签:
javascript
string
performance
memory-management
【解决方案1】:
我想指出,您正在比较一个旧的 1998/1999 Java 平台
到现代的 JavaScript。显然,从那时起,Java 经历了很多变化。
JavaScript 与 constants 的兼容性历史可能与您的观察有很大关系。
根据Mozilla 的说法,JavaScript 中的常量直到最近才与大多数浏览器兼容。
在早期版本的 Firefox 和 Chrome 以及 Safari 5.1.7 和 Opera 12.00 中,如果您使用 const 定义变量,您以后仍然可以更改其值。它在 Internet Explorer 6-10 中不受支持,但在 Internet Explorer 11 中包含。
您可以在 JavaScript 中定义一个常量,但该值实际上仍然可以更改,因此它不是真正的常量。当使用一些带有常量的指令时,在这些浏览器上运行的脚本会中断。因此,甚至没有多少开发者愿意为它们费心。
这对研究来说相当有趣,很多人对这个话题感到困惑。