为什么缓冲区片不等于它应该是什么?

> 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在节点的文档,但它并没有解决我的问题阅读。

Buffer是一个对象

平等是JavaScript最令人困惑的方面之一。
==与===的行为,types强制的顺序等等都使得这个主题复杂化。

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

内部JavaScript实际上有两种不同的方法来testing相等性。 string和数字等基本元素通过它们的值进行比较,而诸如数组,date和普通对象等对象则通过引用进行比较。 引用比较基本上检查给定的对象是否指向内存中的相同位置。

例如:

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

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

如何比较缓冲区:

Node.js中的缓冲区比较