JSON.stringifyで値が消えるのはなぜ？undefined・NaN・Mapと保存形式の決め方

JSONへ保存したらプロパティが消えた、Mapが空になった、Dateが文字列になった。JavaScriptの値とJSONの違いを実行例で確認し、未取得・ゼロ・大きな整数を区別する保存形式を考えます。