Передача параметра undefined в функцию - проверка наличия переменной
Рассмотрим следующий Javascript:
function getType(obj){
return(typeof(obj))
}
alert(typeof(obj)) //alerts "undefined" correctly
alert(getType(obj)) //throws an error: ReferenceError: obj is not defined
Почему это может произойти? Есть ли обходной путь? Я пытаюсь написать функцию, которая проверяет, существует ли переменная.
Ответы
Ответ 1
Проблема не имеет ничего общего с typeof. Проблема в том, что вы не можете передать переменные undefined в функции.
function doNothing(obj){
}
doNothing(obj);
Этот код также приводит к ошибке: Uncaught ReferenceError: obj is not defined
Поэтому не имеет значения, какой код вы пишете внутри своей функции, поскольку он не будет вызван. Ошибка перед вызовом функции.
typeof
является оператором, а не функцией.
Вот почему он не ведет себя так же, как функции.
Ответ 2
typeof
является оператором, а не функцией и, следовательно, имеет полномочия, которые функция не может иметь. Нет способа сделать то, что вы пытаетесь сделать.
Ответ 3
Ваша функция завершается с ошибкой, как только вы пытаетесь передать объект undefined. Вы не можете инкапсулировать функцию typeof()
. Ну, вы можете, но он всегда будет бросать ошибки при передаче объектов undefined.