我在新的m1 macbook pro上使用ChromeVersion 101.0.4951.64 (Official Build) (arm64)
。
是预期行为吗?Array.isArray(new Float32Array([0, 1, 2]))
返回false
?
console.log(Array.isArray(new Float32Array([1, 2, 3])));
typedarray不是数组。
console.log(new Uint32Array instanceof Array)
对应于typedarray的Array.isArray()
是ArrayBuffer.isView()
:
const typed = new Float32Array(1024);
const arr = new Array(1024);
console.log(Array.isArray(typed)); // false
console.log(Array.isArray(arr)); // true
console.log(ArrayBuffer.isView(typed)); // true
console.log(ArrayBuffer.isView(arr)); // false
的特殊性,它也将返回true
的DataView对象。
类型化数组在技术上不是数组,它们是TypedArray
s,并且有自己的类型:
let floatArr = new Float32Array();
console.log(Object.prototype.toString.call(floatArr));
console.log(Object.prototype.toString.call([]));
根据MDN web docs:
JavaScript类型数组是类数组对象
…
但是,类型化数组的不能与普通数组相混淆,因为在类型化数组上调用Array.isArray()
将返回false
。