Простой эксперимент ответит на этот вопрос:
if( foo != null ) {
alert('foo not null');
}
приведенный выше пример выдает ошибку javascript во многих браузерах: "ReferenceError: Can't find variable: foo"
.Это связано с тем, что мы использовали переменную, которая ранее не была объявлена в качестве аргумента или var
в текущей области.
оператор typeof
, с другой стороны, создает явное согласование для переменных, которыене был определен - он возвращает 'undefined'
, поэтому:
if( typeof foo != 'undefined') {
alert('foo is not defined');
}
работает как положено.
Таким образом, ответ «нет» - они не одно и то же -- хотя в некоторых средах javascript они могут вести себя одинаково, в других средах ваша вторая форма будет выдавать ошибки, если foo
не определено.