0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

修正前のコード

今日は開発中に、以下のようなコードを書きました。

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に代入されます。

感想

実務で「値を取得して配列に代入する」というケースは結構あると感じたので、「取得した値が存在しない可能性がある」ことを常に意識し、空配列での初期化を忘れないようにしたいと思いました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?