【发布时间】:2015-05-23 21:17:04
【问题描述】:
我确实在网上搜索过这个信息,有人说 yes 因为 javascript 必须创建一个新的字符串对象来存储连接的结果,有人说 no 因为字符串不收集对象。
也许这取决于上下文。例如,如果我有一个对象数组,例如
animals["blue_dog","red_dog","yellow_cat","red_bird","green_bird"...]
我有一个带有animal 和color 参数的函数,在这个函数中我会像这样访问我的对象:
animals[animal+"_"+color]。
大多数时候我在绘制文本时会进行连接,这显然不会在每帧中发生很多次。所以即使变成垃圾,也无足轻重。但是当使用串联作为对象的键时,由于循环,这种串联可能每帧发生一千次,然后这可能会成为一个问题。
【问题讨论】:
-
请提供一些工作代码示例。
-
数组用整数索引。
animals[animal+"_"+color]是引用对象属性的格式。 -
即使这是一个问题(不是),你的选择是什么?
-
var array = { "blue-dog": 1, "red-dog": 3, "red-fox": 2, "blue-fox": 4 } var heads, tails, i; heads = ["blue", "red"]; tails = ["dog", "fox"]; var CONST = 1000000; for( i = 0 ; i < CONST; i++ ) { array[heads[i%2] + '-' + tails[i%2]]; } -
在 Chrome 中使用活动的 Profiler 尝试此代码以检查您的理论。
标签: javascript garbage-collection