Добрый день,
подскажите пожалуйста почему данный код:
const config = {
login: 'asd',
password: '1234'
}
const r = Buffer.from(Buffer.from([0]).buffer).toString()
console.log(r)
А конкретно
Buffer.from(Buffer.from([0]).buffer).toString()
возвращает часть исходного кода приложения?
кто-нибудь уже сталкивался с подобным поведением? Где можно почитать об этом? Очень интересно
Вот что сказал один умный человек:
- менеджер памяти для рантайма js запрашивает у операционки большой кусок озу. Например, 2 мегабайта. Потом он нарезает эти 2 мб как ему угодно
- например, выделил 8 кб под буффер исходного кода для парсинга
- поигрался с ним, распарсил в AST и выкинул страницу 8кб, как ненужную
- потом пришел запрос уже от кода "дай мне что-нибудь, чтобы вместить буффер", и ему прилетает эта же нынче свободная страница 8 кб
- А почему мы с помощью API ноды получаем какие-то левые данные, а не те, которые мы в from уазали? Потому что .buffer
- это сырой массив
- данные лежат в буфере и ограничиваются им
- в этом буфере ЛЕЖАТ твои данные, но по byteOffset и buf.length
- а ArrayBuffer - это абстракция над сырым массивом байт, поверх которого работает все остальное, включая IntArray, FloatArray, Buffer и т.д.