Atomics.or()

静态方法 Atomics.or() 用数组中指定位置的值进行一次按位或运算,并返回未计算时数组中指定位置处的值。这个 atomic 操作保证了在修改后的值被写回之前没有其它的写入操作发生。

尝试一下

Syntax

Atomics.or(typedArray, index, value)

参数

typedArray

一个共享的 int 数组,类型为 Int8ArrayUint8ArrayInt16ArrayUint16ArrayInt32ArrayUint32Array

index

typedArray 中要进行按位或运算的索引。

value

要进行按位或运算的数。

返回值

typedArray[index] 处运算前的值。

异常

  • typedArray 不是一个可用的 int 类型,则抛出一个 TypeError 异常。
  • typedArray 不是一个共享的数组类型,则抛出一个 TypeError 异常。
  • index 索引超出了 typedArray 的大小,则抛出一个 RangeError 异常。

详情

a 或者 b 为 1 时,按位或运算结果为 1。或运算真值表如下:

a b a | b
0 0 0
0 1 1
1 0 1
1 1 1

例如,让 5 & 1 进行按位或运算的结果是 0101 ,也就是十进制的 5:

5  0101
1  0001
   ----

5  0101

示例

var sab = new SharedArrayBuffer(1024);
var ta = new Uint8Array(sab);
ta[0] = 2;

Atomics.or(ta, 0, 1); // returns 2, the old value
Atomics.load(ta, 0);  // 3

规范

Specification
ECMAScript Language Specification
# sec-atomics.or

浏览器兼容性

BCD tables only load in the browser

相关文档