在Buffer对象上传播运算符

时间:2016-10-15 15:50:16

标签: node.js

有人可以解释一下这段代码的工作原理:

[...Buffer('abc')]

结果是:

[ 97, 98, 99 ]

1 个答案:

答案 0 :(得分:3)

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

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]

很抱歉有可能发生错别字,希望这会有所帮助。