b1.slice(1, 3) > b1.slice(1, 3) == Buffer("@@") false 如您所见,最后-6ren">
gpt4 book ai didi

javascript - 为什么 Buffer slice 不等于它应该是什么?

转载 作者:行者123 更新时间:2023-11-30 17:26:03 30 4
gpt4 key购买 nike

> var b1 = Buffer("d@@");
undefined
> b1.slice(1, 3)
<Buffer 40 40>
> b1.slice(1, 3) == Buffer("@@")
false

如您所见,最后一行显示 b1.slice(1, 3) 不等于 Buffer("@@"),这让我很困惑。谁能告诉我原因?

这里是 buf.slice在 Node 的文档中,但它并没有解决我阅读它的问题。

最佳答案

Buffer 是一个对象

相等性是 JavaScript 最初最令人困惑的方面之一。
== 与 === 的行为、类型强制转换的顺序等都使主题复杂化。

您可能会认为,如果两个对象具有相同的属性并且它们的所有属性都具有相同的值,那么它们将被视为相等。

在 JavaScript 内部实际上有两种不同的方法来测试相等性。像字符串和数字这样的基元是通过它们的值来比较的,而像数组、日期和普通对象这样的对象是通过它们的引用来比较的。通过引用进行比较基本上是检查给定的对象是否引用内存中的相同位置。

例如:

[ 1 , 2 , 3 ] != [ 1 , 2 , 3 ]

在这里阅读更多 http://designpepper.com/blog/drips/object-equality-in-javascript.html

如何比较缓冲区:

Buffer comparison in Node.js

关于javascript - 为什么 Buffer slice 不等于它应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24260408/

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