Я натолкнулся на следующий код:
function (data) {
if (data != null && data !== undefined) {
// some code here
}
}
Я немного новичок в JavaScript, но из других вопросов, которые я читал здесь, у меня создается впечатление, что этот код не имеет особого смысла.
Вы получите сообщение об ошибке при доступе к переменной undefined в любом контексте, отличном отtypeof.Дел >
Обновление: Ответ (цитата) выше может ввести в заблуждение. Он должен сказать "необъявленную переменную" вместо "a undefined variable".
Как я узнал в ответах Ryan ♦, maerics и nwellnhof, даже если аргументы не передаются функции, его переменные для аргументов всегда объявляются. Этот факт также не соответствует первому элементу в списке ниже.
По моему мнению, могут возникнуть следующие сценарии:
-
Функция вызывалась без аргументов, тем самым делаяdataпеременную undefined и поднимая ошибку наdata != null. -
Функция была вызвана специально с помощью
null(илиundefined) в качестве аргумента, и в этом случаеdata != nullуже защищает внутренний код, рендеринг&& data !== undefinedбесполезен. -
Функция вызывается с ненулевым аргументом, и в этом случае она будет тривиально проходить как
data != null, так иdata !== undefined.
Q: Правильно ли мое понимание?
В консоли Firefox я пробовал следующее:
--
[15:31:31.057] false != null
[15:31:31.061] true
--
[15:31:37.985] false !== undefined
[15:31:37.989] true
--
[15:32:59.934] null != null
[15:32:59.937] false
--
[15:33:05.221] undefined != null
[15:33:05.225] false
--
[15:35:12.231] "" != null
[15:35:12.235] true
--
[15:35:19.214] "" !== undefined
[15:35:19.218] true
Я не могу понять случай, когда data !== undefined после data != null может быть полезен.