Atomics.xor()
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.xor()
staticmethod computes a bitwise XOR 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) XOR 2 (0010) = 5 (0101)console.log(Atomics.xor(uint8, 0, 2));// Expected output: 7console.log(Atomics.load(uint8, 0));// Expected output: 5
Syntax
Atomics.xor(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 XOR.value
The number to compute the bitwise XOR 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 XOR operation yields 1, ifa
andb
are different.The truth table for the XOR operation is:
a | b | a ^ b |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
For example, a bitwise XOR of5 ^ 1
results in0100
which is4 in decimal.
5 01011 0001 ----4 0100
Examples
Using xor
const sab = new SharedArrayBuffer(1024);const ta = new Uint8Array(sab);ta[0] = 5;Atomics.xor(ta, 0, 1); // returns 5, the old valueAtomics.load(ta, 0); // 4
Specifications
Specification |
---|
ECMAScript® 2026 Language Specification # sec-atomics.xor |