`Atomics``.add()` 静态方法会将给定的值加到数组里的某个特定位置上，并返回该位置的旧值。此原子操作保证在写上修改的值之前不会发生其他写操作。

The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.

## 语法

    Atomics.add(typedArray, index, value)

### 参数

`typedArray`
  一个共享的整型 typed array。例如 `Int8Array`，`Uint8Array`，`Int16Array`，`Uint16Array`，`Int32Array`，或者 `Uint32Array`。
`index`
  `typedArray` 中的位置，该位置数值会被加总并更新。
`value`
  增加的数字。

### 返回值

给定位置的旧值（`typedArray[index]）`。

### 错误

- 假如 `typedArray` 不是允许的整型之一，则抛出 `TypeError`。
- `假如 typedArray` 不是一个shared typed array类型，则抛出 `TypeError`。
- 如果 `index` 超出了 `typedArray 的边界，则抛出` `RangeError`。

## 示例

    var sab = new SharedArrayBuffer(1024);
    var ta = new Uint8Array(sab);

    Atomics.add(ta, 0, 12); // returns 0, the old value
    Atomics.load(ta, 0); // 12

## 规范

Specification | Status | Comment
--- | --- | ---
ECMAScript Latest Draft (ECMA-262) Atomics.add | Draft | Initial definition in ES2017.

## 浏览器支持

The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.

Update compatibility data on GitHub

| Desktop | Mobile | Server
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | Safari on iOS | Samsung Internet | Node.js
`add` | Chrome Full support 68 Full support 68 No support 60 — 63 Notes Notes Chrome disabled `SharedArrayBuffer` on January 5, 2018 to help reduce the efficacy of speculative side-channel attacks. This was a temporary removal while mitigations were put in place. | Edge No support 16 — 17 Notes No support 16 — 17 Notes Notes Support was removed to mitigate speculative execution side-channel attacks (Windows blog). | Firefox Full support 57 Notes Disabled Full support 57 Notes Disabled Notes Support was disabled by default to mitigate speculative execution side-channel attacks (Mozilla Security Blog). Disabled From version 57: this feature is behind the `javascript.options.shared_memory` preference (needs to be set to `true`). To change preferences in Firefox, visit about:config. No support 55 — 57 No support 46 — 55 Disabled Disabled From version 46 until version 55 (exclusive): this feature is behind the `javascript.options.shared_memory` preference (needs to be set to `true`). To change preferences in Firefox, visit about:config. | IE No support No | Opera No support No | Safari No support 10.1 — ? | WebView Android No support 60 — 63 Notes No support 60 — 63 Notes Notes Chrome disabled `SharedArrayBuffer` on January 5, 2018 to help reduce the efficacy of speculative side-channel attacks. This is intended as a temporary measure until other mitigations are in place. | Chrome Android No support 60 — 63 Notes No support 60 — 63 Notes Notes Chrome disabled `SharedArrayBuffer` on January 5, 2018 to help reduce the efficacy of speculative side-channel attacks. This is intended as a temporary measure until other mitigations are in place. | Edge Mobile ? | Firefox Android Full support 57 Notes Disabled Full support 57 Notes Disabled Notes Support was disabled by default to mitigate speculative execution side-channel attacks (Mozilla Security Blog). Disabled From version 57: this feature is behind the `javascript.options.shared_memory` preference (needs to be set to `true`). To change preferences in Firefox, visit about:config. No support 55 — 57 No support 46 — 55 Disabled Disabled From version 46 until version 55 (exclusive): this feature is behind the `javascript.options.shared_memory` preference (needs to be set to `true`). To change preferences in Firefox, visit about:config. | Opera Android No support No | Safari iOS No support No | Samsung Internet Android No support No | nodejs Full support 8.10.0

### Legend

Full support
  Full support
No support
  No support
Compatibility unknown
  Compatibility unknown
See implementation notes.
  See implementation notes.
User must explicitly enable this feature.
  User must explicitly enable this feature.

## 相关

- `Atomics`
- `Atomics.sub()`