🍭

よく使うJavaScriptのモダンな記法

2025/02/05に公開

テンプレートリテラル(`${}`)

文字列に変数や式を埋め込む

const name = "Alice";
console.log(`Hello, ${name}!`); // "Hello, Alice!"

デフォルト引数

関数の引数が未指定の場合、デフォルト値を設定する

function greet(name = "Guest") {
  console.log(`Hello, ${name}!`); // "Hello, Guest!"
}

分割代入

オブジェクトや配列から特定の値を簡単に取り出す

オブジェクト

const { name, age } = { name: "Alice", age: 30 };
console.log(name, age); // Alice 30

配列

const [first, , third] = [1, 2, 3]; // 2番目の要素(2)をスキップして first と third を取得
console.log(first, third); // 1 3

アロー関数

簡潔な関数の記述

const add = (a, b) => a + b;
console.log(add(1, 2)); // 3

オプショナルチェイニング(?.)

オブジェクトのプロパティが存在しなくてもエラーにならない

const user = { name: "Alice", address: { city: "Tokyo" } };
console.log(user?.address?.city); // "Tokyo"
console.log(user?.contact?.phone); // undefined

ヌール合体演算子(??)

nullまたはundefinedの場合にデフォルト値を設定する。0やfalseはそのまま残る。

console.log(null ?? "default"); // "default"
console.log(undefined ?? "default"); // "default"
console.log(0 ?? "default"); // 0
console.log(false ?? "default"); // false

スプレッド演算子(...)

配列、オブジェクト、文字列を展開、結合する

オブジェクト

const obj = { age: 30, city: "Tokyo" };
const objCopy = { name: "Alice", ...obj };
console.log(objCopy); // {name: 'Alice', age: 30, city: 'Tokyo'}

配列

const arr = [1, ...[2, 3], 4];
console.log(arr); // [1, 2, 3, 4]

文字列

const name = "Alice";
console.log(...name); // A l i c e

関数の可変長引数

引数の個数が不定の関数を作成する

const printNumbers = (...num) => {
  console.log(num); // [1, 2, 3, 4]
};
printNumbers(1, 2, 3, 4);

プロパティ省略記法

オブジェクトのプロパティ名と変数名が同じ場合、省略して記述できる

const name = "Alice";
const age = 30;
const person = { name, age };
console.log(person); // {name: 'Alice', age: 30}

論理代入演算子

変数が特定の条件を満たす場合に、値を代入する

左辺がfalsyの場合、右辺を代入(||=)

let username = null;
username ||= "Guest";
console.log(username); // Guest

左辺がtruthyの場合、右辺を代入(&&=)

let isActive = true;
isActive &&= false;
console.log(isActive); // false

左辺がnullまたはundefinedの場合、右辺を代入(??=)

let theme;
theme ??= "light"; 
console.log(theme);  // light

三項演算子(? :)

条件に応じて異なる値を返す

const isLoggedIn = true;
const status = isLoggedIn ? "ログイン中" : "未ログイン";
console.log(status); // "ログイン中"

Discussion