Следующая функция показывает, почему и способна определить разницу:
function test() {
var myObj = {};
console.log(myObj.myProperty);
myObj.myProperty = null;
console.log(myObj.myProperty);
}
Если вы позвоните
test();
Вы получаете
1010 * не определено *
1012 * нуль *
Первый console.log(...)
пытается получить myProperty
из myObj
, пока он еще не определен - поэтому он возвращается "неопределенным". После присвоения ему значения null второй console.log(...)
возвращает, очевидно, значение «null», поскольку myProperty
существует, но ему присвоено значение null
.
Чтобы иметь возможность запрашивать эту разницу, JavaScript имеет null
и undefined
: хотя null
- как и в других языках объект, undefined
не может быть объектом, потому что нет экземпляра даже не экземпляр null
).