
* 型変換

** 真偽値

[7] [CODE(JS)@en[[[undefined]]]] は[[偽]]の値とみなされます。

* 代替

[6] 値 [CODE(JS)@en[[[undefined]]]] は古い版の [[JavaScript]] では用意されていませんでした (概念としては存在しました)。
そのため、[[未定義値]]であるかの判定には [CODE(JS)@en[[[void]](0)]] ([[引数]]は任意の値です。) と比較したり、
[CODE(JS)@en[[[typeof]]()]] の返す値が [CODE(JS)@en["[[undefined]]"]] と等しいか比較したりする方法が採られていました。
その名残で最近であってもこれらの方法が使われることがあります。 ([TIME[2009-05-10T08:33:21.200Z]])

* 関連

[8] [CODE(JS)@en[[[undefined]]]] は [CODE(JS)@en[[[null]]]] と似ていますが、別の値です。

[9] 意味的・機能的・名前的に [[Perl]] の [CODE(perl)@en[[[undef]]]] と似ています。ただし [[Perl]]
の [CODE(perl)@en[[[undef]]]] は [[JavaScript]] の [CODE(JS)@en[[[null]]]] の役割も担います。

[10] [CODE(JS)@en[[[undefined]]]] は[[空文字列]]や [CODE(JS)@en[[[false]]]] とも別の値です。

* 歴史

[4]
>The [DFN@en[undefined value]] is a [[primitive value]] used when a [[variable]] has not been [[assigned]] a [[value]].

;; [CITE[ECMAScript Language Specification (HTML version)]] ([TIME[2009-04-03 04:43:48 +09:00]] 版) <http://bclary.com/2004/11/07/#a-4.3.9>

[5]
>The [[type]] [CODE(JS)@en[[[Undefined]]]] has exactly one [[value]], called [CODE(JS)@en[[[undefined]]]].

;; [CITE[ECMAScript Language Specification (HTML version)]] ([TIME[2009-04-03 04:43:48 +09:00]] 版) <http://bclary.com/2004/11/07/#a-4.3.10>

- [1] ''JavaScript の未定義値 undefined を考える'' <http://kobit.info/tips/undefined.html>

[2]
>>1 は消滅、 [[Internet Archive]] にもなし。
([[名無しさん]] [WEAK[2005-03-29 11:51:57 +00:00]])

[3]
>>2 [CITE[JavaScript の未定義値 undefined を考える]] <http://web.archive.org/web/20040511124940/http://kobit.info/tips/undefined.html>
([[名無しさん]] [WEAK[2005-04-24 09:18:56 +00:00]])

[11] [CITE[Define hack for open() to deal with undefined and omitted being differen... · 76a4c65 · whatwg/xhr]]
( ([TIME[2014-01-08 07:25:29 +09:00]] 版))
<https://github.com/whatwg/xhr/commit/76a4c653ffd0a65e04a52fe2daa9729dbcf64410>

[12] [CITE@en[Write structured clone algorithm in terms of ECMAScript · whatwg/html@bfb960c]]
([TIME[2016-03-02 16:45:08 +09:00]] 版)
<https://github.com/whatwg/html/commit/bfb960c938580c95e77365e614218b952f96375b>

[13] [CITE@en[Breaking: refactor structured clone into serialize/deserialize]]
([[domenic]]著, [TIME[2017-03-21 06:09:33 +09:00]])
<https://github.com/whatwg/html/commit/97d644c97335956610a31e8ad98d1a388c063e84>