Когда JavaScript возвращает null & undefined?
Я использовал JavaScript уже пару лет и никогда не интересовался разницей между null
и undefined
раньше, я всегда использую undefined
для проверки существования объекта.
Но недавно я пришел через в эту статью. Здесь они сказали
JavaScript различает нуль, который является объектом типа "объект", который указывает на преднамеренное не значение, и undefined, который является объектом типа "undefined", который указывает неинициализированное значение, значение еще не было присвоено. Мы поговорим о переменных позже, но в JavaScript можно объявить переменную без присвоения ей значения. Если вы это сделаете, тип переменной undefined.
Теперь я совершенно смущен, что здесь нецензурно. Как это значение не отличается от undefined
. И каковы обстоятельства, возвращаемые javascript null
.
Я попробовал приведенный ниже пример
var sam;
alert(sam); // returns undefined
и
try {
//var sam;
alert(sam);
} catch(ex) { } // exception says: sam is undefined
И я не уверен, когда js возвращает нули. Может кто-то уточнить меня.
Ответы
Ответ 1
оповещения (SAM);//возвращает undefined
Нет, это исключение.
Вы получаете undefined
при доступе к неустановленному свойству; вы получаете сообщение об ошибке при непосредственном использовании имени unset.
Глобальные переменные интересны тем, что к ним можно получить доступ либо с использованием простого имени переменной, либо с помощью свойств глобального объекта window
:
alert(window.sam); // undefined
alert(window['sam']); // undefined
alert('sam' in window); // false
alert(sam); // ERROR
Если sam
объявлен, но не инициализирован, доступ к window.sam
по-прежнему получает вас undefined
, но по другой причине: есть запись в объекте window
для sam
, но она указывает на тот же объект undefined
, который вы получаете, когда получаете доступ к несуществующему свойству.
var sam;
alert(window.sam); // undefined
alert(window['sam']); // undefined
alert('sam' in window); // ** true
alert(sam); // ** undefined
Это, конечно, путаный кровавый беспорядок; undefined
является одной из худших ошибок при разработке языка JavaScript.
null
, с другой стороны, отлично и работает почти так же, как значения null/nil/void/None на других языках. Это не входит ни в один из вышеперечисленных.
Ответ 2
<script type="text/javascript">
// variable with an unasigned value
var a;
if (a == undefined) {
alert('a is undefined');
}
if (a == null) {
alert('a is undefined');
}
// this will produce an error
if (b == undefined) {
alert('b is undefined');
}
// this is the right way to handle not defined variables
if (typeof(c) == 'undefined') {
alert('c is blabla');
}
</script>
Ответ 3
Чтобы переменная принимала нулевое значение, она должна быть назначена. null
используется для указания неизвестного значения или значения, которое не имеет значения. undefined
, с другой стороны, предназначен для указания того, что доступ к ресурсу никогда не назначал значение. Это отличается от null
.
С null
человек сознательно говорит: "Я не знаю, какое значение это должно иметь" или "Мне все равно, какое значение это сейчас". OTH в undefined
действительно говорит: "Вы уверены, что должны использовать это значение, которое ему не назначено".
Ответ 4
То, как я их различаю, - это undefined "Я не определил это значение", а null - "Я определил это значение, но я не знаю или не могу понять, какое значение должно быть".