修正前のコード
今日は開発中に、以下のようなコードを書きました。
let oldArr = $p.getControl("項目名").val();
$p.getControlは、現在開発で使っているPleasanter(プリザンター)というWeb OSS独自のスクリプトです。
指定した項目に入力された値(配列型)を取得し、oldArrという変数に格納するといった内容です。
問題点
ただ、取得した値が空だった場合(何も入力されていない場合)、oldArr は null になります。
この状態では push や concat、map、filter、forEach など、配列のメソッドが使えずエラーになります。
修正後のコード
取得した値が空の場合には、空配列 [] で初期化してあげる必要があります。
// 初期値のガード
// `oldArr` が `null` だった場合に `.concat()` でエラーになる可能性があります。
// **改善例**:
let oldArr = $p.getControl("階層分類").val() || [];
このコードでは、$p.getControl("階層分類").val() の返り値が falsy 値(null, undefined, '', 0, false など)の場合は[](空配列)が使われます。
逆に、truthy 値(つまり実際に値が存在する場合)はoldArrに代入されます。
感想
実務で「値を取得して配列に代入する」というケースは結構あると感じたので、「取得した値が存在しない可能性がある」ことを常に意識し、空配列での初期化を忘れないようにしたいと思いました!