为什么缓冲区片不等于它应该是什么?
> 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中的缓冲区比较