JavaScript/@--

カテゴリ:Book:JavaScript#@--%20

-- (後置) は、ECMAScript における後置デクリメント演算子です。この演算子は、オペランド(変数やプロパティ)の値を 1 減少 させますが、減少前の値を返します。この演算子は、主にループやカウンタの更新に使用されます[1]

構文

LeftHandSideExpression[?Yield, ?Await] --
  • LeftHandSideExpression[?Yield, ?Await]: デクリメントする対象の変数やプロパティ。YieldAwait は、ジェネレーター関数や非同期関数内での使用を制御するためのオプションのパラメータです。

この演算子は、以下のように使用されます:

let x = 5;
let y = x--; // y は 5、x は 4

動作

後置デクリメント演算子 ( --) は、以下の順序で動作します:

  1. 現在の値を返す: オペランドの現在の値を返します。
  2. 値を減少させる: オペランドの値を 1 減少させます。

基本的な使用法

以下のプログラムは、後置デクリメント演算子の基本的な使用法を示しています。

// 基本的な使用法
let x = 5;
let y = x--; // y は 5、x は 4

console.log(x); // 4
console.log(y); // 5

このプログラムでは、x の値が 1 減少しますが、y には減少前の値が代入されます。

ループでの使用

以下のプログラムは、ループ内で後置デクリメント演算子を使用する例を示しています。

// ループでの使用
for (let i = 5; i > 0; i--) {
  console.log(i); // 5, 4, 3, 2, 1
}

このプログラムでは、ループの各反復で i の値が 1 減少します。i-- は、ループの反復ごとに i を更新するために使用されます。

オブジェクトのプロパティでの使用

以下のプログラムは、オブジェクトのプロパティに対して後置デクリメント演算子を使用する例を示しています。

// オブジェクトのプロパティでの使用
const obj = {
  count: 5
};

obj.count--; // obj.count は 4 になる
console.log(obj.count); // 4

このプログラムでは、obj.count の値が 1 減少します。

配列の要素での使用

以下のプログラムは、配列の要素に対して後置デクリメント演算子を使用する例を示しています。

// 配列の要素での使用
const arr = [10, 20, 30];
let index = 2;

arr[index--]--; // arr[2] は 29 になる、index は 1 になる
console.log(arr); // [10, 20, 29]
console.log(index); // 1

このプログラムでは、arr[index--] の値が 1 減少し、index も 1 減少します。

注意点

  • 副作用: 後置デクリメント演算子は、オペランドの値を変更するため、副作用があります。式の中で使用する場合、その副作用に注意が必要です。
  • 数値以外のオペランド: オペランドが数値でない場合、JavaScript は自動的に数値に変換しようとします。例えば、文字列 "5" は数値 5 に変換されます。
  • 定数への使用: const で宣言された変数に対しては、後置デクリメント演算子を使用できません(再代入できないため)。

前置デクリメント演算子との違い

後置デクリメント演算子 ( --) と前置デクリメント演算子 ( --) の主な違いは、以下の通りです:

例:

let x = 5;
let y = x--; // y は 5、x は 4

let a = 5;
let b = --a; // b は 4、a は 4

脚註

  1. 後置デクリメント演算子は、式の評価後に値を減少させるため、式の結果に影響を与えます。

外部リンク

カテゴリ:Book:JavaScript#@--%20 カテゴリ:JavaScript
カテゴリ:Book:JavaScript カテゴリ:JavaScript カテゴリ:Pages using the JsonConfig extension