📜  JavaScript 中的 Atomics.and()

📅  最后修改于: 2022-05-13 01:57:05.784000             🧑  作者: Mango

JavaScript 中的 Atomics.and()

什么是原子?

  • Atomics 是 JavaScript 中的一个对象,它提供了将原子操作作为静态方法执行的能力。
  • 就像 JavaScript 中的 Math 对象一样,Atomics 的所有属性和方法也是静态的。
  • 原子与 SharedArrayBuffer(通用固定长度二进制数据缓冲区)对象一起使用。
  • 原子不是像其他全局对象那样的构造函数。
  • 原子不能与 new运算符一起使用,也不能作为函数调用。

JavaScript 中的原子操作
当有共享内存时,多个线程可以在内存中读取和写入相同的数据。为确保准确写入和读取预测值,除非当前操作完成,否则无法开始另一操作。原子操作也不能中断。

Atomics.and() 方法

  • 在原子操作中,JavaScript 中有一个内置操作 Atomics.and(),用于计算数组中给定位置的给定值的按位与。
  • Atomics.and() 操作返回该位置的旧值。
  • 整数类型数组、索引和值作为参数传递给函数,并返回已存储在相应数组中的值。

句法:

Atomics.and(typedArray, index, value)

使用的参数:此方法接受三个参数,如下所述:

  1. typedarray:此参数指定共享整数类型数组 Int8Array、Uint8Array、Int16Array 等。
  2. index:此参数指定在数组中的位置, typedArray用于计算按位与。
  3. value:此参数指定计算按位与的数字。

返回值: Atomics.and() 方法返回给定位置的旧值(typedArray[index])。
例子:

Input : arr[0] = 5
        Atomics.and(arr, 0, 3)
Output : 1

Input : arr[0] = 4
        Atomics.and(arr, 0, 6)
Output : 4

下面的程序说明了 Atomics.and() 方法:
方案一:

javascript


javascript


javascript


输出:

5
1
1

方案二:

javascript


输出:

7
2
2

应用:
每当我们想对任何值进行按位与运算并希望返回计算值时,我们都会在 JavaScript 中使用 Atomics.and() 操作。
让我们看一个 JavaScript 程序:

javascript


输出:

9
9

例外:

  • 如果 typedArray 不是允许的整数类型之一,那么 Atomics.and() 操作会抛出 TypeError。
  • 如果 typedArray 不是共享类型数组,那么 Atomics.and() 操作会抛出 TypeError。
  • 如果用作 Atomics.and() 操作的参数的索引在 typedArray 中超出范围,则 Atomics.store() 操作会引发 RangeError。

支持的浏览器:

  • 谷歌浏览器
  • 微软边缘
  • 火狐