==是否创建垃圾?(将字符串与数字进行比较时)
Does == create garbage ? (when comparing a string to a number)
我喜欢在比较值时不考虑变量是字符串还是数字,所以我使用==,而不是==。但是,由于==在比较之前将两个值转换为相同的数据类型,这是否会产生垃圾并加剧游戏中那些讨厌的垃圾收集短暂暂停?如果是,它是仅在将字符串与数字进行比较时,还是也在将数字与数字和字符串与字符串进行比较时?
是的,==
可以创建垃圾,因为它在执行类型强制时可能会调用对象上的.toString()
或.valueOf()
方法;并且这些方法可能会运行浩劫(它们可以是用户定义的)。
但不,==
在将(基元)字符串与(基元的)数字进行比较时不会创建垃圾,返回结果后,可以(也将)立即回收进程中分配的所有内存。
请注意,如果您关心游戏的垃圾收集速度,那么您应该首先关心一致的值类型。这可能会加快你的游戏速度;并且当使用===
时,可以确保没有创建垃圾。
==
运算符只有在实际对对象进行类型转换时才会创建任何对象。如果比较相同类型的值,则无需为比较创建任何值。
但是,您应该尝试确保您的数据是预期类型的。当你把一个值放在一个变量中时,转换一次它比每次使用时都隐式转换它更便宜。
相关文章:
- 当与另一个实例进行比较时,我的类实例如何隐式返回数字
- ==是否创建垃圾?(将字符串与数字进行比较时)
- 将日期字符串转换为数字以进行比较
- 为什么字符串与数字的比较在Javascript中有效
- 我如何比较一组数字,找出哪一个更接近生成的数字
- switch语句中的数字比较失败
- 量角器 - 比较数字
- 比较 OnKeyUp JavaScript 时只有第一位数字
- Javascript数字变量比较不起作用
- Javascript:将日期作为数字进行比较
- 如何将密钥与固定数字进行比较
- 将文本字段中的数字与数组中的数字进行比较,具体取决于 PHP 和 jQuery 的选择
- JavaScript中的数字比较
- Javascript数字比较操作符是如何处理字符串的
- 在javascript中解析一个数字比较字符串
- Javascript数字比较失败
- 矩阵行列式.数字比较的问题
- 三元运算符在进行数字比较时的奇怪行为
- JavaScript数字比较函数-比较与减法
- 布尔值与数字比较中的 JavaScript 真实性