gpt4 book ai didi

JavaScript:Object 与 True(或其他基元)相等性比较(性能/优化)

转载 作者:行者123 更新时间:2023-11-28 01:57:39 25 4
gpt4 key购买 nike

因此,从对 JavaScript 的基本了解来看,===== 更快(大多数情况下)(因为 === 不必执行类型转换)。

最近我看到有人为整个函数/对象/类设置了一组高范围的变量:

var val = {}; // some random object that never changes?
var Obj = {};

然后(可选地重复)稍后:

Obj[key] = val;

然后(可选地重复,并且可能与上面交织在一起)稍后比较:

if ( Obj[key] === val ) {...}

我的问题是,为什么(如果是的话)它比完全跳过 val 并仅使用:更快/更好:

Obj[key] = true; // or = 1, or something?

// ... more code, then later checking:

if ( Obj[key] === true ) // or === 1 or just ( Obj[key] ) because basic existence evaluates to true

我认为使用 true1 所损失的性能比将对象与其自身进行比较更糟糕,但我想了解为什么?

谢谢!

最佳答案

这不是为了性能,对象更好,因为它不能被“伪造”。考虑:

var RED = 1,
GREEN = 2,
BLUE = 3;

现在,如果你检查一些 color === RED,它实际上不会检查它,它只是检查 color 是否等于数字 1,无论是有意还是巧合。

现在是这样:

var RED = {},
GREEN = {},
BLUE = {};

当你这样做时,color === RED,你实际上是在检查颜色是否是红色,因为对象标识不能是其他任何东西。

关于JavaScript:Object 与 True(或其他基元)相等性比较(性能/优化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18884882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com