JavaScriptでは、これはと呼ばれundefined
、とは異なる一意のセンチネル値null
です。
定義されていないundefined
グローバル変数undefined
またはオブジェクトのプロパティを評価するか、関数の呼び出しなど、値を返さないステートメント、または何も返さないステートメント、またはブロックを評価することによって取得しますまたは変数宣言(これら2つは有効な式ではないため、JavaScript REPLでのみ発生します)。
ときにundefined
値があることを強制されるObject
ことになるnull
が、そうではありませんnull
。
ここに小さなイラストがあります:
var a = [1, 2, 3];//undefined
a[0];//1
a[4];//undefined
var o = { foo: "123" };//undefined
o.foo;//"123";
o.bar;//undefined
function bar() { return null; };//undefined
bar();//null
function foo() { /*just an empty block*/};//undefined
foo();//undefined
typeof undefined;//"undefined"
typeof null;//"object"
null == undefined;//true - that is because undefined is converted to an object for comparison and thus yields null
null === undefined;//false - because they are not the same
null
それがあなたの質問であるなら、私は未定義の値を(として定義された値とは対照的に)未定義と呼ぶことは理にかなっていると思います。一意のセンチネル値を使用して定義された値がないことを伝えることは、動的言語では実行可能なソリューションですが、よく理解されていないことがよくあります。