Я натолкнулся на следующий код:
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
может быть полезен.