是= =创造垃圾? (将字符串与数字进行比较时)

时间:2015-03-26 17:39:38

标签: javascript garbage-collection

我喜欢在比较值时不考虑变量是字符串还是数字,所以我不使用==,而不是===。但是因为==在比较之前将这两个值转换为相同的数据类型,它是否会在游戏中创建垃圾并加剧那些讨厌的垃圾收集短暂暂停?如果是这样,它是仅在将字符串与数字进行比较时,还是在将数字与数字和字符串与字符串进行比较时进行的?

2 个答案:

答案 0 :(得分:0)

==运算符只有在实际对对象进行类型转换时才会创建任何对象。如果比较相同类型的值,则无需为比较创建任何值。

但是,您应该尝试确保您的数据属于预期类型。将值放在变量中时,将值转换为一次,比每次使用它时隐式转换的值要便宜。

答案 1 :(得分:0)

是的,==可以创建垃圾,因为它可能在执行类型强制时调用对象上的.toString().valueOf()方法;这些方法可能会破坏(它们可以是用户定义的)。

但不,==在将(原始)字符串与(原始)数字进行比较时不会产生垃圾,在返回结果后,进程中分配的所有内存都可以(并且将会立即回收)。

请注意,如果您关心游戏的垃圾收集速度,那么您首先应该关注一致的值类型。这可能会加快你的游戏速度;当使用===时,您可以确定没有创建垃圾。