1. ホーム
  2. javascript

[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?

2022-07-05 10:50:08

質問

私は基本的に次のような関数を書いています。

function getNextCard(searchTerms) {
  // Setup Some Variables

  // Do a bunch of logic to pick the next card based on termed passed through what I'll call here as 'searchTerms' all of this logic is omitted because it's not important for my question.
  // ...

  // If we find a next card to give, than give it
  if (nextCardFound)
    return nextCardFound;

  // Otherwise - I'm returning undefined
  return undefined;
}

質問です。ここでは"null"を返すのが良いのでしょうか?

私は私が望むものは何でも返すことができます - 明らかに... ただ、何を使うのがベストなのかがわかりませんでした。

この関数を呼び出すコードは、未定義を扱う方法を知っています(実際には、何かがひどく間違っていない限り、実際に起こることはありません)。

なぜこの質問をするかというと、どこかで "未定義を変数に代入してはいけない" みたいな、デバッグが難しくなるというような話を聞いたことがあるからです。 ということで、私が見ることができるのは null が返されるということは、return が機能しているということです。 undefined .


ドキュメンテーション。

Mozilla ドキュメント 私の質問には答えてくれませんでした...google もそうでした :\)

このSOの質問 - は、私がここで理解しようとしていることに対して、あまりにも広範でした。

どのように解決するのですか?

ベストな方法はなく、標準的な関数でもどちらかを選択することがあると主張します。

たとえば

  • [プロトタイプ]]です。

    通常のオブジェクトは[[Prototype]]という内部スロットを持ち、どの他のオブジェクトから継承するかを決定します。もちろん、あるオブジェクトが他のオブジェクトを継承していないことを示す方法がなければなりません。この場合、"そのようなオブジェクトは存在しません" を表すには null .

  • Object.getOwnPropertyDescriptor

    プロパティ記述子、つまり、プロパティ(値、書き込み可能性、列挙可能性、設定可能性など)を記述したオブジェクトを返すことが期待されています。しかし、そのプロパティが存在しない場合もあります。この場合、"there is no such property"を使って表現します。 undefined .

  • document.getElementById

    与えられたIDを持つ要素を返すことが期待されています。しかし、そのIDを持つ要素が存在しない場合もあります。この場合、"there is no such element"と表現します。 null .

ですから、あなたが好むもの、あるいはあなたの特定のケースにとってより理にかなっていると思うものを選べばよいのです。