В JavaScript есть два значения, которые в основном говорят: «Меня не существует» - undefinedи null.
Свойство, которому программист ничего не назначил, будет undefined, но для того, чтобы свойство стало возможным null, оно nullдолжно быть явно присвоено ему.
Однажды я подумал, что нужна примитивная ценность и объект, nullпотому что это необходимо . Это не так, даже если приведет к получению : на самом деле, оба являются примитивными значениями - что означает, что ни одно из них не может быть возвращено из функции-конструктора, поскольку оба будут преобразованы в пустой объект (необходимо выдать ошибку, чтобы объявить сбой в конструкторах).undefinednulltypeof null'object'undefinednull
Они оба вычисляют значение falseв логических контекстах. Единственная реальная разница, о которой я могу думать, это то, что один оценивает NaN, а другой - 0в числовом контексте.
Итак, почему есть и то, undefinedи другое, и nullесли это просто сбивает с толку программистов, которые неправильно проверяют, nullпытаясь выяснить, установлено ли свойство или нет?
Я хотел бы знать, есть ли у кого-нибудь разумный пример, в котором необходимо использовать, nullкоторый нельзя выразить с помощью undefined.
Таким образом, общее мнение, по-видимому, сводится к тому, что undefined«такого свойства нет», а nullзначит «свойство существует, но не имеет ценности».
Я мог бы смириться с этим, если бы реализации JavaScript фактически обеспечивали такое поведение, но undefinedэто совершенно допустимое примитивное значение, поэтому его можно легко назначить существующим свойствам, чтобы разорвать этот контракт. Поэтому, если вы хотите убедиться, что свойство существует, вы должны использовать inоператор или в hasOwnProperty()любом случае. Итак, еще раз: в чем практический смысл отдельных значений для undefinedи null?
На самом деле я использую, undefinedкогда хочу сбросить значения свойств, которые больше не используются, но которых я не хочу delete. Должен ли я использовать nullвместо этого?
In JavaScript, there are two values which basically say 'I don't exist' - undefined and null.Нет, только так undefinedговорит.
undefined.