gpt4 book ai didi

javascript - 为什么我们不能通过将长度分配为零来清空 Float32Array() 数组,就像其他普通数组一样?在Javascript中

转载 作者:搜寻专家 更新时间:2023-10-31 23:34:19 24 4
gpt4 key购买 nike

假设我们有两个数组。

var normal = new Array(1,2,3,4);
var float32 = new Float32Array(4);

现在可以清空普通数组了

normal.length = 0;

但是,对于 float32,我无法清空数组

float32.lenght = 0;

数组保持不变。为什么??

最佳答案

因为您的 Float32Array 只是底层 ArrayBuffer 的一个 View ,它本身是一个固定长度的原始二进制数据缓冲区

冒着简化一点的风险,一旦为 ArrayBuffer 分配了内存槽,它将保留在相同的槽中,并且您将无法修改其 byteLength*。


*实际上,您可以通过传输其数据来清空保存数据的对象,即使传输它只是为了清空 ArrayBuffer 对象是没有意义的,因为您将无法更改又是它的长度(不推):

var arr = new Float32Array(56);
console.log('before transfer', arr.length);
postMessage(arr, '*', [arr.buffer]);
console.log('after transfer', arr.length);

关于javascript - 为什么我们不能通过将长度分配为零来清空 Float32Array() 数组,就像其他普通数组一样?在Javascript中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47869083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com