Взгляните, например, на https://en.wikipedia.org/wiki/NaN
IEEE 754 NaN * представлены полем экспоненты, заполненным единицами (например, значения бесконечности), и некоторыми не- нулевое число в значимом и (чтобы отличать их от значений бесконечности);это представление позволяет определять несколько различных значений NaN, в зависимости от того, какие биты установлены в значенииand, а также от значения бита начального знака (но приложения не обязаны предоставлять различную семантику для этих различных значений NaN).
Итак, вы создали массив NaN.
Чтобы успешно создать Float64Array из буфера uint8array, необходимо убедиться, что буфер содержит допустимые представления 64-битных чисел с плавающей запятой, например,
// pixels array is the input
let pixels = new Uint8Array([ 174,71,225,122,20,174,40,64]); // Float64Array([12.34]).buffer
let floatArr = new Float64Array(pixels.buffer) // I
console.log(floatArr) // 12.34
Несмотря на это, вы, вероятно, не хотите использовать Float64Array в любом случае, поскольку преобразование буфера значений цветных пикселей вряд ли приведет к созданию каких-либо значимых чисел.(И, по крайней мере, в чем-то вроде C вы рискуете создать представления ловушек, не зная, как это обрабатывается в JS)
В комментариях кто-то предложил BigUint64Array, который обойдет представления NaN и ловушки.Но я думаю, что это все еще доступно только в Chrome.
И, как указано ниже Kaiido, Uint32Array будет хранить ваши 4 цветовых канала для каждого пикселя, так что если вы не пытаетесь творить магию там, где вам нужноинтегрируйте пиксели попарно, 32-битный типизированный массив - это то, что вам нужно.