Panda Noir

JavaScript の限界を究めるブログでした。最近はいろんな分野を幅広めに書いてます。

JSON.stringify の返り値は undefined になることがあるよ

JSON.stringify(undefined)undefined です。 以上です。

正答率10%。みんな undefined を渡したときの挙動を知らなかったっぽいですね(僕も知りませんでした)

補足

JSON.stringify に undefined を渡した時の挙動は ECMAScript (ECMA-262) の JSON.stringify でちゃんと定義されています。

他の例外パターンとして、循環があると TypeError が起きるようです。

a = [];
a[0] = a;
my_text = JSON.stringify(a); // throw a TypeError.

また、JSON.stringify(function() {})undefined になります。

さらに補足

JSON.stringify の型をみると string しか返ってこないことになっています。 2017 年に issue が建てられていますがまだ解決していません。https://github.com/microsoft/TypeScript/issues/18879