// Creating an ArrayBuffer with a size in bytes
var buffer = new ArrayBuffer(16);
// Creating views
var view1 = new DataView(buffer);
// Putting 1 in slot 0
view1.setInt8(0, null);
console.log(view1.getInt8(0));
结果:0
预期:null
如何设置空/空数据?我们是否可以检查arraybuffer中的空数据?
例如:我们有一个csv文件,其数据如下:
0,,1,0
非常感谢
从MDN ArrayBuffer docs(强调我):
ArrayBuffer对象用于表示通用的固定长度原始binary数据缓冲区。
即ArrayBuffers仅保存二进制(数字)值。因此,DataView API仅允许您设置浮点或整数值。但是,null
不是数字。这是JS的primitive values之一。
您可以在EcmaScript规范中进一步看到,在抽象SetValueInBuffer操作的第4步中,断言:类型(值)是数字。”但是,规范并未定义如何处理非数字类型。有人可能会争辩说,在这种情况下应抛出TypeError
,但我检查了所有实现(Chrome,Safari ,Firefox,Node.js)悄悄地将值强制转换为零……这就是您所看到的。如果传递String
,Date
,RegEx
,Boolean
,也会得到相同的行为或undefined
。
((但是,如果传递BigInt
或Symbol
,您似乎会收到TypeError ...很奇怪。)