Javascript ArrayBuffer-无法将空值设置为arraybuffer

问题描述 投票:-1回答:1
// 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

非常感谢

javascript web-worker arraybuffer
1个回答
0
投票

MDN ArrayBuffer docs(强调我):

ArrayBuffer对象用于表示通用的固定长度原始binary数据缓冲区。

即ArrayBuffers仅保存二进制(数字)值。因此,DataView API仅允许您设置浮点或整数值。但是,null不是数字。这是JS的primitive values之一。

您可以在EcmaScript规范中进一步看到,在抽象SetValueInBuffer操作的第4步中,断言:类型(值)是数字。”但是,规范并未定义如何处理非数字类型。有人可能会争辩说,在这种情况下应抛出TypeError,但我检查了所有实现(Chrome,Safari ,Firefox,Node.js)悄悄地将值强制转换为零……这就是您所看到的。如果传递StringDateRegExBoolean,也会得到相同的行为或undefined

((但是,如果传递BigIntSymbol,您似乎会收到TypeError ...很奇怪。)

© www.soinside.com 2019 - 2024. All rights reserved.