Когда JavaScript возвращает значение null и неопределенное?

StackOverflow https://stackoverflow.com/questions/1559952

  •  21-09-2019
  •  | 
  •  

Вопрос

Я использую JavaScript уже пару лет, и меня никогда не волновала разница между null & undefined раньше я всегда использовал undefined для подтверждения существования объекта.

Но недавно я прошел через Эта статья.Здесь они сказали

JavaScript различает null, который представляет собой объект типа «object», который указывает на намеренное отсутствие значения, и undefine, который представляет собой объект типа «undef», который указывает на неинициализированное значение, то есть значение даже не было назначено еще.О переменных мы поговорим позже, но в JavaScript можно объявить переменную, не присваивая ей значения.Если вы это сделаете, тип переменной не определен.

Я теперь совсем запутался, что именно здесь неценно.Чем эта неценность отличается от undefined.И при каких обстоятельствах JavaScript возвращает null.

Я попробовал приведенный ниже образец

var sam;
alert(sam);  // returns undefined

И

try {
    //var sam;
    alert(sam);  
} catch(ex) { }   // exception says: sam is undefined

И я не уверен, когда js возвращает нули.Может кто-нибудь прояснить мне.

Это было полезно?

Решение

оповещение (Сэм);// возвращает неопределенное значение

Нет, это исключение.

Вы получаете undefined когда вы получаете доступ к неустановленному свойству;вы получите сообщение об ошибке, если напрямую используете неустановленное имя.

Глобальные переменные интересны тем, что к ним можно получить доступ либо с помощью простого имени переменной, либо с помощью свойств 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 на других языках.Это не входит ни в одно из вышеперечисленных.

Другие советы

<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>

Чтобы переменная получила нулевое значение, ей необходимо присвоить. null используется для обозначения неизвестного или неважного значения. undefined с другой стороны, предназначено для указания того, что свойству, к которому осуществляется доступ, никогда не присваивалось значение.Это отличается от null.

С null один намеренно говорит: «Я еще не знаю, какое значение это должно иметь» или «Мне все равно, какое значение это имеет сейчас».OTH в undefined на самом деле говорит: «Вы уверены, что вам следует использовать это значение, оно не было присвоено».

Я различаю их так: undefine означает «я не определил это значение» и null означает «я определил это значение, но не знаю или не могу понять, каким должно быть это значение».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top