Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Thuộc tính ArrayBuffer.byteLength trong JavaScript

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