カンマ演算子を使って JavaScript の if 文を Python のように書く

カンマ演算子を使って JavaScript の if 文を Python のように書く

February 28, 2022

なんとなく MDN で JavaScript の式と演算子の一覧を眺めていたら目に入ったのが「カンマ演算子(,)」です。恥ずかしながら今回初めて知りました。

しかし実は知らずに使っていただけで、 for 文に出てくるのがそれでした。(for 文をこのように使うこともそれほど多くはないですが。)

for (let i = 0, j = 9; i <= 9; i++, j--) {
  console.log(`i=${i} j=${j}`);
}

(この演算子は C 言語由来ですかね?C 言語ほとんど触ったことないので詳しくない。)

コンマ演算子 - Wikipedia

記述を省略するために使う #

カンマ演算子は、単一の式が求められる場所で複数の式を記述したい場合に使うことができます。

JavaScript | MDN

for 文の例もそうでしたが、カンマ演算子は1行に複数の式を記述する場合に使います。

例えば以下、greet1()greet2() は同じ挙動です。greet2() がカンマ演算子を使った記述です。

const sayHello = () => console.log('Hello');
const sayMyFriend = () => console.log('MyFriend');

const greet1 = (myFriend) => {
  if (myFriend) {
    sayHello();
    sayMyFriend();
  } else {
    sayHello();
  }
};

const greet2 = (myFriend) => (myFriend ? (sayHello(), sayMyFriend()) : sayHello());

if 文を Python のように書く #

本来複数行になる記述を1行にまとめるという性質を利用すると、例えば JavaScript で Python チックな if 文を記述できます。

Python

if x < 42:
  print('Less!!')
  print('The answer is greater than you put in.')
elif x == 42:
  print('You got it!!')
  print('Yes, the answer is 42.')
else:
  print('More!!')
  print('The answer is smaller than you put in.')

JavaScript

if (x < 42)
  console.log('Less!!'),
  console.log('The answer is greater than you put in.');
else if (x === 42)
  console.log('You got it!!'),
  console.log('Yes, the answer is 42.');
else
  console.log('More!!'),
  console.log('The answer is smaller than you put in.');

実際にこんな使い方すると怒られると思いますけどね。

参考 #

この記事を書いた後で、同様の内容がある記事を見つけたので添付しておきます。また、他にも色々な黒魔術テクニックが書いてあって面白いです。

コーディング時の型破りな記法やスタイル【プログラミング・テクニック】 | MaryCore