<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データブロック<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">Data Block</rt></rubyb></dfn>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列</anchor>を格納できる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バッファー</anchor>を表す <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">仕様書</anchor>上の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データ構造</anchor>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">仕様書型</anchor>) です。</p><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite>ECMAScript® 2018 Language Specification</cite> (<time>2017-06-14 04:16:40 +09:00</time>) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tc39.github.io/ecma262/#sec-data-blocks">https://tc39.github.io/ecma262/#sec-data-blocks</anchor-external></li></ul></refs></section><section><h1>意味</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 
通常の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データブロック<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">データブロック (JavaScript)</title></anchor> (<code class="JS" xml:lang="en">ArrayBuffer</code> で使われるもの)
の他に、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">共有データブロック</anchor> (<code class="JS" xml:lang="en">SharedArrayBuffer</code> で使われるもの)
があります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データブロック<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">データブロック (JavaScript)</title></anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">共有データブロック</anchor>は、
作成直後はすべて <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x00</n> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor>の列となっています。</p></section><section><h1>演算</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">仕様書</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">操作</anchor> 
<dfn><code>CreateByteDataBlock</code></dfn>
は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正整数</anchor><var>サイズ</var>について、次のようにします <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>。</p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト数</anchor>が<var>サイズ</var>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データブロック<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">データブロック (JavaScript)</title></anchor>を作成できない場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <code class="JS" xml:lang="en">RangeError</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">例外</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">投げ</anchor>、ここで停止します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <var>データブロック</var>を、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト数</anchor>が<var>サイズ</var>の新しい<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データブロック<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">データブロック (JavaScript)</title></anchor>に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> [ <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n>, <var>サイズ</var> - <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</n> ] の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">範囲</anchor>の各<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">整数</anchor><var>索引</var>について、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <var>データブロック</var> [ <var>索引</var> ] を、 <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> に設定します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <var>データブロック</var>を返します。</li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> 
この<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">操作</anchor>は、<code class="DOMi" xml:lang="en">ArrayBuffer</code> を作成する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">操作</anchor>
<code class="JS" xml:lang="en">AllocateArrayBuffer</code> から呼び出されます。</p></section><section><h1>ごみ収集</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データブロック<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">データブロック (JavaScript)</title></anchor>は、通常の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オブジェクト</anchor>同様、
どこからも<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">参照</anchor>されなくなったら (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">参照</anchor>している <code>ArrayBuffer</code>
がすべて破棄されたら) <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ごみ収集</anchor>できます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データブロック<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">データブロック (JavaScript)</title></anchor>は複数の
<code>ArrayBuffer</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オブジェクト</anchor>から同時に参照されている状態となることがあります。</p></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプトデータブロック</anchor>とは無関係です。</p></section></body></html>