このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

DataView.prototype.byteLength

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。

byteLengthDataView インスタンスのアクセサープロパティで、このビューの長さを(バイト単位で)返します。

試してみましょう

// ArrayBuffer をバイト単位のサイズで作成
const buffer = new ArrayBuffer(16);

const view1 = new DataView(buffer);
const view2 = new DataView(buffer, 12, 4); // 12 バイト目から続く 4 バイト

console.log(view1.byteLength + view2.byteLength); // 16 + 4
// 予想される結果: 20

解説

byteLengthプロパティはアクセサープロパティであり、その設定アクセサー関数は undefined であるため、このプロパティは読み取り専用です。DataView長さ追跡 である場合、その長さは基盤となるバッファーの長さに依存し、バッファのサイズ変更時に変更されることがあります。そうでない場合、値は DataView の構築時に確定され、変更できません。長さ追跡の有無にかかわらず、基盤となるバッファーのサイズ変更により表示範囲ができなくなった場合、byteLength は 0 になります。

byteLength プロパティの使用

js
const buffer = new ArrayBuffer(8);
const dataview = new DataView(buffer);
dataview.byteLength; // 8 (バッファーの byteLength に一致)

const dataview2 = new DataView(buffer, 1, 5);
dataview2.byteLength; // 5 (DataView を構築する際に指定)

const dataview3 = new DataView(buffer, 2);
dataview3.byteLength; // 6 (構築された DataView のオフセットによる)

const buffer2 = new ArrayBuffer(16, { maxByteLength: 32 });
const dataviewLengthTracking = new DataView(buffer2, 4);
dataviewLengthTracking.byteLength; // 12 (16 - 4)
buffer2.resize(20);
dataviewLengthTracking.byteLength; // 16 (20 - 4)
buffer2.resize(3);
dataviewLengthTracking.byteLength; // 0 (ビュー範囲が有効ではなくなった)

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-get-dataview.prototype.bytelength

ブラウザーの互換性

関連情報