为什么修改Buffer片段会修改原始片段?

时间:2017-06-18 20:04:46

标签: javascript node.js

以下内容修改了Buffer的切片。

这样做,它也会修改原始 Buffer。如果我要在Array上执行类似的操作,那么原件将保持不变。

这种行为也是Node.js上slice方法的具体实现的结果。 Buffer

const fs = require('fs');

fs.readFile(__filename, (err, buffer) => {
  const tag = buffer.slice(-2, -1);
  tag[0] = 'B';

  console.log(buffer.toString());
});

 // TAG: A

1 个答案:

答案 0 :(得分:1)

文档说

  

返回一个新的Buffer,它引用与原始内存相同的内存,但是偏移并由开始和结束索引裁剪。注意:修改新的缓冲区片段将修改原始缓冲区中的内存,因为两个对象的已分配内存重叠。

https://nodejs.org/api/buffer.html#buffer_buf_slice_start_end