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]
对不起,有可能的错别字,希望这有助于。
- 当我用.stream()函数使用mongo tailable游标时,CPU过热
- 我可以把npm node_modules目录放在我的'webroot'
- 如何使用这些Node模块通过文件或URL接受HTML,然后输出JSON作为现有HTML元素的validation?
- 在RollingFileStream中configurationlog4js的fileName
- 创build一个支持callback和承诺的Mongoose插件
- node-soap客户端中的数组字段的名称空间(Node.js)
- NodeJS从缓冲区创buildstream
- NodeJs的request.get()函数不能正常工作,而url可以从浏览器访问
- 如何插入一个位置的MongoDB集合