Из документов MDN ArrayBuffer (выделено):
Объект ArrayBuffer используется для представления общих исходных двоичных данных фиксированной длиныбуфер.
Т.е. ArrayBuffers содержат только двоичные (Number) значения. По этой причине API DataView позволяет устанавливать только значения с плавающей запятой или целочисленные значения. null
, однако, не является числом. Это одно из примитивных значений JS .
. Это можно увидеть в спецификации EcmaScript, где на шаге 4 абстрактной операции SetValueInBuffer у вас есть "Assert: Type(значение) - это число. "Спецификация, однако, не определяет, как обрабатывать нечисловые типы. Можно утверждать, что в этом случае должен быть выдан TypeError
, но все реализации, которые я проверял (Chrome, Safari, Firefox, Node.js), спокойно приводят значение к нулю ... что вы и видите. Вы получите то же поведение, если передадите String
, Date
, RegEx
, Boolean
или undefined
.
(Если вы передадите BigInt
или Symbol
однако, вы, похоже, получили ошибку типа ... странно.)