4
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?

More than 1 year has passed since last update.

ちっちゃくアウトプットAdvent Calendar 2023

Day 22

JavaScriptにおけるundefinedとnullの違い

Last updated at Posted at 2023-12-21

これはなに

値がないときに利用する undefinednull ですが、いつも違いについてぱっと思い出せなくなるので、記事化して整理したいと思います。

意味の違い

undefinednull の違いを検索したときに、「2つの違いは曖昧である」と表現する記事は多かったです。
undefinedとnullの違い | TypeScript入門『サバイバルTypeScript』では、このように表現していました。

  • undefined
    • 値が代入されていないため、値がない
  • null
    • 代入すべき値が存在しないため、値がない

発生タイミング

  • undefined
    • 自然発生する = 定義されていない
  • null
    • 自然発生しない = 定義された「空」を返す

nullは開発者が「空である」という状態を意図的に表すための値です。

undefinedは開発者が意図的に使わなくても自然発生します。
そもそも参照することを想定されていません。
変数を宣言したときに初期値がなければ、undefinedが代入されます。

例:変数が初期化されてないとき

let x;
console.log(x); 
//結果 undefined

例:プロパティが存在しないとき

let obj = { a:123 }
console.log(obj.b);
//結果 undefined

例:配列の添字の場所が存在しないとき

const arr = [];
console.log(arr[0]);
//結果 undefined

例:関数の戻り値がないとき

function func() {}
console.log(func());
//結果 undefined

変数と関数

  • undefined
    • 変数
  • null
    • リテラル

typeof演算子

typeof undefined;
//結果 "undefined"
typeof null;
//結果 "object"

どっちを使えばいい?

TypeScriptの開発チームのコーディングGuideにはundefinedを使うという記述がありました。

null and undefined
1.Use undefined. Do not use null.

とはいえ、各開発チームの方針があると思うので、準拠していくと良いと思います。


この記事が誰かのお役に立てると幸いです。

参考

4
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
4
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?