Thuộc tính byteLength của ArrayBuffer trả về kích thước của buffer tính bằng byte (số nguyên 32-bit không dấu). Đây là thuộc tính chỉ đọc (read-only) được xác định tại thời điểm tạo buffer.
Cú pháp
arrayBuffer.byteLength
Ví dụ cơ bản
const buffer = new ArrayBuffer(8);
console.log(buffer.byteLength); // 8
const buffer2 = new ArrayBuffer(1024);
console.log(buffer2.byteLength); // 1024
Trường hợp đặc biệt
Truyền đối số không phải số
const buffer = new ArrayBuffer("Hello");
// Tham số không phải số -> byteLength = 0
console.log(buffer.byteLength); // 0
Giới hạn và lỗi
Kích thước ArrayBuffer phải thỏa mãn:
- Là số nguyên không âm
- Không vượt quá
253 - 1(≈ 9 quadrillion bytes / 8 PB) - Không phải số phức, NaN, Infinity
Lỗi: Kích thước quá lớn
try {
new ArrayBuffer(9007199254740995); // 2^53 - 1 + 2
} catch (e) {
console.error(e.name); // RangeError
console.error(e.message); // "Array buffer allocation failed" hoặc tương tự
}
Lỗi: Số âm
try {
new ArrayBuffer(-72);
} catch (e) {
console.error(e.name); // RangeError
console.error(e.message); // "Invalid array buffer length"
}
Lỗi: Số không hợp lệ
try {
new ArrayBuffer(2.5); // Làm tròn xuống -> 2
new ArrayBuffer(NaN); // -> 0
new ArrayBuffer(Infinity); // RangeError
} catch (e) {
console.error(e);
}
Ứng dụng thực tế
- Kiểm tra dung lượng buffer trước khi đọc/ghi
- Tính toán offset, stride khi tạo nhiều view trên cùng buffer
- Serialization: ghi byteLength trước dữ liệu