有人可以解释一下这段代码的工作原理:
[...Buffer('abc')]
结果是:
[ 97, 98, 99 ]
答案 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]
很抱歉有可能发生错别字,希望这会有所帮助。