Slide 1

Slide 1 text

JavaScript の nullとundefined の違い それっぽくそれなりに @Retasusan 2025/5/29 kyoto tech talk

Slide 2

Slide 2 text

自己紹介 ● @Retasusan ○  @retasusan_510 ● 普段は大学生 ○ 最近レポートが苦しい… ● Ruby on RailsとViteで アプリを作っている ● 昨日クロスバイク購入 現実の姿 インターネットの姿

Slide 3

Slide 3 text

縦置きされる自転車

Slide 4

Slide 4 text

nullとundefined を 使い分けていますか?

Slide 5

Slide 5 text

そもそもnullとundefinedって何? ● null ○ プリミティブ型の一つ ○ リテラル ○ 代入すべき値が存在しないこと明示するときに使われがち? https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/null ● undefined ○ プリミティブ型の一つ ○ グローバルオブジェクトのプロパティ ○ 値が代入されていない時とかに使われる? https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/undefined

Slide 6

Slide 6 text

いろんな関数で比較してみた ● nullとundefined、引数なしを渡した時の関数の挙動の違い

Slide 7

Slide 7 text

typeof演算子

Slide 8

Slide 8 text

typeof演算子 ● 引数がなし ○ undefined ● undefined ○ undefined ● null ○ object

Slide 9

Slide 9 text

等価演算子・厳密等価演算子

Slide 10

Slide 10 text

等価演算子・厳密等価演算子 ● 等価演算子 ○ 暗黙の型変換でnullと undefinedが等しく扱われる ● 厳密等価演算子 ○ 引数なしとundefinedは 等しい ○ nullは等しくない

Slide 11

Slide 11 text

デフォルト引数

Slide 12

Slide 12 text

デフォルト引数 ● 引数がなし、undefined ○ デフォルト値 ● null ○ null

Slide 13

Slide 13 text

ちょっと有名なやつ

Slide 14

Slide 14 text

isNaN関数

Slide 15

Slide 15 text

isNaN関数 ● 引数なし(undefined), undefined ○ true(NaN) ● null ○ false(数値) ● 数値 + undefined ○ true(NaN) ● 数値 + null ○ false(数値) ● 数値 ○ false(数値)

Slide 16

Slide 16 text

isNaN関数(余談)

Slide 17

Slide 17 text

isNaN関数(余談) ● 真偽値と文字列の数値 ○ false(数値になる) ● NaN ○ true ● NaN === NaN ○ false ○ 等価演算子だと比較できないから isNaN関数がある

Slide 18

Slide 18 text

Number関数

Slide 19

Slide 19 text

Number関数 ● 引数なし ○ 0 ● null ○ 0 ● undefined ○ NaN ● これがisNaN関数の中で動いてる

Slide 20

Slide 20 text

なんか意外だったやつ

Slide 21

Slide 21 text

JSON.stringify()

Slide 22

Slide 22 text

JSON.stringify() ● 通常のJSオブジェクト ○ nullとundefinedを保持 ● JSONオブジェクト ○ undefinedは無効な値 ○ プロパティごと無視される ● JSON配列 ○ undefinedはnullに置換され る

Slide 23

Slide 23 text

Date関数

Slide 24

Slide 24 text

Date関数 ● 引数なし ○ 現在時刻 ● null ○ UNIXエポック ● undefined ○ Invalid Date

Slide 25

Slide 25 text

まとめ ● nullとundefinedでは挙動が違うことがよくある ● undefinedと引数なしは同じ挙動のことが多い ○ 稀に違う

Slide 26

Slide 26 text

JavaScript の nullとundefined の違い それっぽくそれなりに @Retasusan 2025/5/29 kyoto tech talk