Atomics.xor()
Baseline Widely 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.
In this article
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: 5Syntax
Atomics.xor(typedArray, index, value)Parameters
typedArrayAn integer typed array. One of
Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,BigInt64Array, orBigUint64Array.indexThe position in the
typedArrayto compute the bitwise XOR.valueThe number to compute the bitwise XOR with.
Return value
The old value at the given position (typedArray[index]).
Exceptions
TypeErrorThrown if
typedArrayis not one of the allowed integer types.RangeErrorThrown if
indexis 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); // 4Specifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-atomics.xor> |