[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?
質問
私は基本的に次のような関数を書いています。
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
.
ですから、あなたが好むもの、あるいはあなたの特定のケースにとってより理にかなっていると思うものを選べばよいのです。
関連
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] 変数が「未定義」または「NULL」であるかどうかを判断するにはどうすればよいですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] nullはなぜオブジェクトなのか、nullとundefinedの違いは何ですか?
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] event.targetを使用して、要素の親要素をターゲットにすることができますか?
-
[解決済み] React.jsでテキスト入力のchange/focusOutイベントを正しくキャッチする方法とは?
-
[解決済み] $.when.apply($, someArray)は何をするのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JSONの未定義の値型
-
[解決済み] JavaScriptで "undefined "をチェックするにはどうすればよいですか?[重複しています]
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] nullはなぜオブジェクトなのか、nullとundefinedの違いは何ですか?
-
[解決済み] JavaScriptでundefinedの代わりにnullを使用する理由は何ですか?
-
[解決済み] <noscript> の反対語のHTMLはありますか?
-
[解決済み] WebpackでjQueryを本物のWindowオブジェクトに公開する
-
[解決済み] jQuery scroll() は、ユーザーがスクロールを止めたことを検出する。
-
[解決済み] node.js シェルコマンドの実行
-
[解決済み] 特定のクラスを持たない要素を選択する方法