undefinedとnullの使い分け
意味
初期化されていない
存在しない
現在利用できない
用途と使い分け
return値
rmaruon.icon「undefinedもnullも使用しない」
何かを返されることを期待しているので、return undefinedは不適
値の有効性を表す意味で使うのは好ましくない
nullを返すか、それ以外の値で表現する
初期化・代入
rmaruon.icon「undefinedもnullも使用しない」
初期化や代入は、値が入ることを意図しているのでfoo = undefinedは不適
nullを入れるか、それ以外の値で表現する
rmaruon.iconはnullを使いたくない
引数
rmaruon.icon「undefinedを使用する」
用途は、必須ではないオプション引数
理由
TypeScriptで?を使った型 | undefinedのユニオン型をサポートしているから
オプション引数を指定しないことが、「初期化されていない」「存在しない」という意味合いに近いと感じるから
nullにしたら、明示的にnullを渡す必要があるから(nullを明示的に渡すってオプション引数じゃないよね)
ref
TypeScriptチームは、nullを使いません: TypeScriptコーディングガイドライン。 そして、問題は起きていません。 Douglas Crockfordはnullは良くない考えであり、誰もがundefinedだけを使うべきだと考えています。
しかし、Nodeスタイルのコードでは、Error引数にnullが標準で使われています。これは何かがおかしいですという意味です。私は個人的に、ほとんどのプロジェクトにおいて、意見がバラバラのライブラリを使っていますが、== nullで除外するだけなので、2つの区別について気にすることはありません。
undefinedは自然発生するもの
nullは明示的に指定するもの
うちもまさにこの考えで、明示的に指定する箇所は全部null使ってる