概要
初見で理解できないコードがあったため、備忘録として...
対象コード
const sample = () => {
void "value";
}
console.log(sample());
// undefined
疑問
ここでいう void
は何をしているのか?
結論
関数の中で void
キーワードを使用すると、それに続く式の結果を評価するが、その結果を無視して常に undefined
を返します。
関数の副作用を利用しながら、戻り値は意図的に無視したい場合に使われます。
ふむふむ...なるほど
より実践的なコード
-
useEffect
で 状態を更新するための非同期処理を定義 - 非同期処理の実行 ※戻り値は使用しないので
void
を先頭につける
useEffect(() => {
const load = async () => {
setIsLoading(true);
try {
const usersData = await getMembers(orgCode);
setUsers(usersData);
} catch (err) {
throw new Error(`organization '${orgCode}' not exists`);
} finally {
setIsLoading(false);
}
};
void load();
}, [orgCode]);
まとめ
void の記述がなくても動作に支障はないですが、明示的に戻り値がないことを示しておくほうが健全そう...