Spread运算符在Buffer对象上

有人可以解释这个代码是如何工作的:

[...Buffer('abc')] 

结果是:

 [ 97, 98, 99 ] 

首先,考虑一下这个狗屎:

 console.log([...[1, 2, 3]]); //[1, 2, 3] 

Spread运算符将尝试获取数组并将其转换为参数列表。

Node.js的缓冲区对象实际上是字节数组,是一种表示字符并同时处理二进制数据的方式。 你可以在https://nodejs.org/api/buffer.html阅读更多关于它的信息。

现在,由于'abc'实际上是三个ASCII字符,每个字符只占用一个字节,并且该字节将对应于其ASCII码。 你可以这样做: myString.charCodeAt(pos) ,在你的情况'abc'.charCodeAt(0)将返回97

所以,

 [...Buffer('abc')] 

实际上会返回一个包含'abc'每个字符的ascii代码的数组。 那是[97, 98, 99]

由于缓冲区的编码默认是UTF-8,因此在处理unicode时,情况会更加令人兴奋。

 console.log([...Buffer('漢字')]); //[230 188 162 229 173 151] 

对不起,有可能的错别字,希望这有助于。