以下内容修改了Buffer
的一部分。
在这样做时,它也修改了原始Buffer
。如果我在Array
上执行类似的操作,那么原始操作将保持不变。
那么这种行为是 Node.js Buffer
上具体实现 slice
方法的结果吗?
const fs = require('fs');
fs.readFile(__filename, (err, buffer) => {
const tag = buffer.slice(-2, -1);
tag[0] = 'B';
console.log(buffer.toString());
});
// TAG: A
文档说
返回一个新的 Buffer,该缓冲区引用与原始内存相同的内存,但按开始和结束索引偏移和裁剪。注意:修改新的缓冲区片将修改原始缓冲区中的内存,因为两个对象的分配内存重叠。
https://nodejs.org/api/buffer.html#buffer_buf_slice_start_end