«Не определено» против «Не определено»

Не определено: попытка использовать переменную, которая не существует и не была объявлена, или не выделяет память; JavaScript выдаст ошибку. var num is not defined, и сценарий остановится тут же.

Неопределенные. Неопределенные переменные - это переменные, которым выделено пространство памяти, но к моменту их выполнения им не присвоены значения. Считается, что общепринятый способ чтобы проверить, если что-то не определено,

typeof var === 'undefined'

скорее, чем

var === undefined

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

Убедитесь, что вы используете оператор тройного равенства, если вы используете второй вариант; (более обычный) оператор двойного равенства выполняет приведение типов, поэтому null == undefined истинно, а null === undefined ложно. Иногда вам может понадобиться первое поведение, но часто нам нужно второе, особенно если вы тестируете против undefined, поэтому важно понимать разницу. (Это еще одно преимущество первого случая, поскольку сделать эту незаметную ошибку невозможно).

Да, переменные могут иметь значение undefined, и вы можете явно присваивать им значения. Однако присвоение переменной undefined, вероятно, сбивает с толку, поскольку это немного парадокс (вы определили переменную как undefined), и невозможно отличить эту переменную от переменных, которые не существуют, или от неинициализированных переменных. Используйте null, если мы хотим обозначить, что переменная в настоящее время не имеет значения, или если вы хотите полностью «отменить объявление» переменной, используйте delete {varname}. Присвоение переменной undefined не удаляет объявление этой переменной; и он по-прежнему будет отображаться в списке свойств объекта-владельца, если вы перейдете по ним, поэтому я не могу придумать ни одной ситуации, в которой это принесло бы вам пользу.