== 与 === 在远程 JavaScript 文件中.哪一个更快

== vs. === in a remote JavaScript file. Which one is faster?

本文关键字:哪一个 文件 JavaScript      更新时间:2023-09-26

可能的重复项:
JavaScript === vs == : 我使用哪个"相等"运算符重要吗?

在 JavaScript 中比较相同类型的两个操作数的相等性时,使用 ===== 不会产生任何概念上的区别,所以我想知道当哪个运算符实际上更快时,就像我的情况一样,JavaScript 文件必须从远程 Internet 位置下载。

虽然严格相等运算符===在许多用户代理上可能执行得更快,但它还需要 8 位未压缩的信息与 JavaScript 文件一起沿网络传输。

碰巧的是,今天的普通 CPU 在执行数百个条件跳转方面比互联网连接在提供一位时要快得多,所以我热衷于使用 == 而不是===!=而不是!==。然而,我对阅读这么多建议做相反事情的博客感到困惑。

我错过了什么重要的点吗?

正如您所说,为了比较两个操作数保证属于同一类型,这两个运算符被指定为执行完全相同的步骤,并且除非编译器优化,否则它们的执行可能足够接近相同。因此,在这些情况下,使用==比使用===在文件大小方面略有优势。

然而,有些人认为一致性更重要:在测试相等性时,===通常更接近你的意图,并且只使用===!==是许多人认为有用和可读的。就个人而言,我有相反的规则,只有在操作数类型不确定时才使用===,但我不建议使用任何一种方式。

如果您了解严格相等

和非严格相等之间的区别,并且确信使用 ==!= 不会在您或其他任何处理您的代码的人将来阅读和理解代码时遇到任何问题,请继续使用它们。

据推测,推荐一个而不是另一个的博客这样做是出于与类似操作的逻辑一致性的原因,而不是为了速度。 试图修剪你的Javascript程序,从脚本中剃掉单个字符是不明智的;在服务之前通过 Minify 或其他自动化工具运行它是一回事,但是手动调整 Javascript 以获得最小文件大小或在单个操作数级别的执行速度是一项无休止的、吃力不讨好的任务,这将使您的网站更难维护。

使用任何对你来说更合乎逻辑的操作数,这样当你两年后不记得这条调查线时,你就不会感到困惑。

如果我可以引用 Douglas Crockford 的 Javascript: The Good Parts:

JavaScript 有两组相等运算符:=== 和 !==,以及它们的 邪恶的双胞胎==和!=。 好的按照你期望的方式工作。 如果两个操作数的类型相同且具有相同的值,则 === 产生真,!== 产生假。当操作数属于同一类型时,邪恶的双胞胎会做正确的事情,但如果他们是 不同类型的,他们试图胁迫价值观。 规则由 他们所做的是复杂且令人难忘的......缺乏 传递性令人震惊。 我的建议是永远不要使用邪恶的双胞胎。 相反,请始终使用 === 和 !==。

无论是否存在性能差异,都很难证明使用"邪恶双胞胎"是合理的。

var test="1";
console.log(test==1); // true
console.log(test===1); // false

==检查测试是否为 1,但===检查测试是否为 1,并检查其数据类型。在这种情况下,第二个表达式为 false,因为它的数据类型是字符串(test 是字符串),但右侧操作数不是字符串。以下测试有所不同

var test=1;
console.log(test==1); // true
console.log(test===1);​ // true

因为 test 包含 Integer 1,计算结果为 Boolean true,右手操作数也相同。 ===还会检查两个操作数是否都键入。