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 Dezember 2021.
Die statische Methode Atomics.xor() berechnet einen bitweisen XOR mit einem gegebenen Wert an einer bestimmten Position im Array und gibt den alten Wert an dieser Position zurück. Diese atomare Operation garantiert, dass keine anderen Schreibvorgänge erfolgen, bis der modifizierte Wert zurückgeschrieben wird.
Probieren Sie es aus
// Create a SharedArrayBuffer with a size in bytes
const 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: 7
console.log(Atomics.load(uint8, 0));
// Expected output: 5
Syntax
Atomics.xor(typedArray, index, value)
Parameter
typedArray-
Ein Ganzzahlen-Typ-Array. Eines von
Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,BigInt64ArrayoderBigUint64Array. index-
Die Position im
typedArray, an der der bitweise XOR berechnet wird. value-
Die Zahl, mit der der bitweise XOR berechnet wird.
Rückgabewert
Der alte Wert an der gegebenen Position (typedArray[index]).
Ausnahmen
TypeError-
Wird ausgelöst, wenn
typedArraynicht einer der erlaubten Ganzzahltypen ist. RangeError-
Wird ausgelöst, wenn
indexaußerhalb der Grenzen destypedArrayist.
Beschreibung
Die bitweise XOR-Operation ergibt 1, wenn a und b unterschiedlich sind.
Die Wahrheitstabelle für die XOR-Operation ist:
a |
b |
a ^ b |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Ein Beispiel: Ein bitweises XOR von 5 ^ 1 ergibt 0100, was 4 im Dezimalsystem ist.
5 0101 1 0001 ---- 4 0100
Beispiele
>Verwendung von xor
const sab = new SharedArrayBuffer(1024);
const ta = new Uint8Array(sab);
ta[0] = 5;
Atomics.xor(ta, 0, 1); // returns 5, the old value
Atomics.load(ta, 0); // 4
Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-atomics.xor> |
Browser-Kompatibilität
Loading…