jsでfor文を書いていると以下のような書き方になることが多い。
let arr = [1, 2, 3];
for (let i = 0; i < arr.length; i++) {
arr[i] = arr[i++]; // ESLint : Disallow the unary operators ++ and --
}
そうすると、ESLintから使うなと警告される。
えーダメなのかと思ってi += 1
に直す作業をするだけでなんで使っちゃダメなのかについて深く考えたことがなかった。
ESLintの警告について読んでいたらUnary Operators
(単項演算子)が原因だったので調べてみた。
単項演算子とは?
単項演算子は一つの値に対して操作を行う演算子で、二項演算子(例:a + b)と異なり、一つの値に対してのみ作用する。
使い方
インクリメント/デクリメント演算子
++
と--
は一般的な使い方のように+1や-1の動きをする。
また、前におくか、後ろにおくかで結果が異なる。
let x = 5;
let y = ++x; // xを増加させてから代入: x = 6, y = 6
let x = 5;
let y = x++; // 現在のxを代入してから増加: x = 6, y = 5
単項プラス/マイナス
直感的な動きをしてくれる。
let num = 5;
+num; // 変更なし
-num; // -5
string
をnumber
に変換する使い方もできる
+"42"; // 42(number)
-"42"; // -42(number)
以下のようにオブジェクトを数値に変えることもできる
+new Date() // 1736674507547
+!!{} // 1
論理NOT演算子
これもjsでよく使われているもので、!!を2つつけて値が存在するかを確認する用途もある。
let flag = true;
!flag; // false
!!flag; // true
演算の順番
同じ+でも実行される順番が異なるため、順番には気を付ける必要がある。
単項の+より二項の+が後に実行されるため、コードがすぐ判断できないこともある
その紛らわしさがESLintでも警告を出す一因となっているでしょう。
おわりに
js紛らわしい...