JavaScriptにはnullとundefinedと、立場が似たものがあるわけですが、さらにこのundefinedにも二種類あるよってお話です。 「本当に無い」のと「「無い」がある」のと 値がundefinedであるときは、文字通り「未定義」である場合と、「未定義という値」である場合とがあります。 var obj = { a: undefined }; console.log(obj.x); // => undefined(定義されていないプロパティ) console.log(obj.a); // => undefined(未定義という値)