遞減 (--)

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

遞減 (--) 運算子遞減(從其運算元中減去一)其運算元,並根據運算子放置的位置返回遞減之前或之後的值。

試一試

let x = 3;
const y = x--;

console.log(`x:${x}, y:${y}`);
// Expected output: "x:2, y:3"

let a = 3;
const b = --a;

console.log(`a:${a}, b:${b}`);
// Expected output: "a:2, b:2"

語法

js
x--
--x

描述

-- 運算子針對兩種型別的運算元進行了過載:number 和 BigInt。它首先將其運算元強制轉換為數值並測試其型別。如果運算元變為 BigInt,則執行 BigInt 遞減;否則,執行 number 遞減。

如果用作字尾,即運算子在運算元之後(例如 x--),則遞減運算子在遞減前返回其值。

如果用作字首,即運算子在運算元之前(例如 --x),則遞減運算子在遞減後返回其值。

遞減運算子只能應用於引用(變數和物件屬性;即有效的賦值目標)的運算元。--x 本身評估為一個值,而不是一個引用,因此你不能將多個遞減運算子連結在一起。

js
--(--x); // SyntaxError: Invalid left-hand side expression in prefix operation

示例

字尾遞減

js
let x = 3;
const y = x--;
// x is 2; y is 3

let x2 = 3n;
const y2 = x2--;
// x2 is 2n; y2 is 3n

字首遞減

js
let x = 3;
const y = --x;
// x is 2; y = 2

let x2 = 3n;
const y2 = --x2;
// x2 is 2n; y2 is 2n

規範

規範
ECMAScript® 2026 語言規範
# sec-postfix-decrement-operator

瀏覽器相容性

另見