В чем разница между нулевым и неопределенным в JavaScript? - PullRequest
966 голосов
/ 22 февраля 2011

Я хочу знать, в чем разница между null и undefined в JavaScript.

Ответы [ 28 ]

2 голосов
/ 08 ноября 2015

По полной статье Райана Морра на эту тему ...

"Обычно, если вам нужно присвоить ненулевое значение переменной или свойству, передайте его функции или верните его из функцииnull - почти всегда лучший вариант. Проще говоря, JavaScript использует undefined, а программисты должны использовать null. "

См. Изучение Вечной Бездны пустых и неопределенных

1 голос
/ 01 февраля 2015

null - Это значение присваивания, которое используется с переменной для представления значения (это объект).

undefined - это переменная, которой не присвоено никакого значения, поэтому JavaScript назначит ей неопределенное значение (это тип данных).

undeclared - Если переменная вообще не создается, она называется undeclared.

1 голос
/ 18 декабря 2016

По сути, Undefined - это глобальная переменная, которую javascript создает во время выполнения, независимо от того, означает ли значение null, что значение не присвоено переменной (фактически, null сам по себе является объектом).

ДавайтеВозьмем пример:

        var x;  //we declared a variable x, but no value has been assigned to it.
        document.write(x) //let's print the variable x

Не определено Вот что вы получите в качестве вывода.

Теперь,

        x=5;
        y=null;
        z=x+y;

, и вы получите 5 как вывод.Это основное различие между Undefined и null

1 голос
/ 07 августа 2015

Разница между undefined и null минимальна, но есть разница. Переменная, значение которой undefined, никогда не инициализировалась. Переменной, чье значение равно null, явно было дано значение null, что означает, что переменная была явно установлена ​​как не имеющая значения. Если вы сравните undefined и null с помощью выражения null==undefined, они будут равны.

0 голосов
/ 18 августа 2014

Просто чтобы добавить мои взгляды -

Переменная, которая объявлена ​​только и нигде не используется, удаляется оптимизирующим компилятором в случае скомпилированных языков, таких как C ++ [или в IDE помечено предупреждение]. В конечном итоге это означает, что переменная не существует, потому что ее память никогда не выделяется.

В случае интерпретатора JavaScript, [я предполагаю], переменная рассматривается как существующая только с той точки, где ей дано значение. До этого момента его тип является «неопределенным», и для него не выделяется память. И, таким образом, его тип не определен.

Нуль в javascript - это значение, которое представляет адрес, но этот адрес еще ни на что не указывает [несуществующая ссылка]. Тем не менее, это значение.

0 голосов
/ 23 октября 2014

Null ВСЕГДА - неизвестный объект, который существует в памяти, тогда как undefined - нет.

0 голосов
/ 01 июля 2019

Я хочу добавить очень тонкую разницу между null и undefined, что полезно знать, когда вы пытаетесь изучить Vanilla JavaScript (JS) с нуля:

  • null является зарезервированным ключевым словом в JS, в то время как undefined является переменной глобального объекта среды выполнения, в которой вы находитесь.

При написании кода это различие не идентифицируется как оба null и undefined всегда используются в RHS инструкции JavaScript.Но когда вы используете их в LHS выражения, вы можете легко наблюдать эту разницу.Поэтому интерпретатор JS интерпретирует приведенный ниже код как ошибку:

var null = 'foo'

Он выдает ошибку ниже:

Uncaught SyntaxError: Неожиданный токен null

Хотя нижекод работает успешно, хотя я не рекомендую делать это в реальной жизни:

var undefined = 'bar'

Это работает, потому что undefined является переменной глобального объекта (объект окна браузера в случае JS на стороне клиента)

0 голосов
/ 23 февраля 2015

Если переменная не инициализирована, то она не определена. undefined не является объектом. Пример: var MyName; console.log (typeof MyName);

Проверьте журнал консоли в инструменте разработки, он будет напечатан как неопределенный.

null - это объект. Если вы хотите, чтобы какая-то переменная была нулевой, тогда используется null. Переменная null существует, но значение неизвестно. Ее следует назначать переменной программно. null не инициализируется автоматически.

Пример: var MyName = null; console.log (typeof MyName); Проверьте журнал csole в средстве разработки, это будет объект.

...