Atomics.and()
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since December 2021.
TheAtomics.and()
staticmethod computes a bitwise AND with a given value at a given position in the array, andreturns the old value at that position. This atomic operation guarantees that no otherwrite happens until the modified value is written back.
Try it
// Create a SharedArrayBuffer with a size in bytesconst buffer = new SharedArrayBuffer(16);const uint8 = new Uint8Array(buffer);uint8[0] = 7;// 7 (0111) AND 2 (0010) = 2 (0010)console.log(Atomics.and(uint8, 0, 2));// Expected output: 7console.log(Atomics.load(uint8, 0));// Expected output: 2
Syntax
Atomics.and(typedArray, index, value)
Parameters
typedArray
An integer typed array. One of
Int8Array
,Uint8Array
,Int16Array
,Uint16Array
,Int32Array
,Uint32Array
,BigInt64Array
, orBigUint64Array
.index
The position in the
typedArray
to compute the bitwise AND.value
The number to compute the bitwise AND with.
Return value
The old value at the given position(typedArray[index]
).
Exceptions
TypeError
Thrown if
typedArray
is not one of the allowed integer types.RangeError
Thrown if
index
is out of bounds in thetypedArray
.
Description
The bitwise AND operation only yields 1, if botha
andb
are1. The truth table for the AND operation is:
a | b | a & b |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
For example, a bitwise AND of5 & 1
results in0001
whichis 1 in decimal.
5 01011 0001 ----1 0001
Examples
Using and()
const sab = new SharedArrayBuffer(1024);const ta = new Uint8Array(sab);ta[0] = 5;Atomics.and(ta, 0, 1); // returns 5, the old valueAtomics.load(ta, 0); // 1
Specifications
Specification |
---|
ECMAScript® 2026 Language Specification # sec-atomics.and |