Передача параметра 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.