Проверьте, существует ли объект в JavaScript

Как проверить наличие объекта в JavaScript?

следующие работы:

if (!null)
   alert("GOT HERE");

но это вызывает ошибку:

if (!maybeObject)
   alert("GOT HERE");

Ошибки:

maybeObject не определен.

16 ответов


Вы можете безопасно использовать typeof оператор на неопределенных переменных.

если ему присвоено любое значение, включая null, typeof вернет что-то другое, кроме undefined. typeof всегда возвращает строку.

if (typeof maybeObject != "undefined") {
   alert("GOT THERE");
}

здесь много полуправды, поэтому я подумал, что кое-что проясню.

на самом деле вы не можете точно сказать, существует ли переменная (если вы не хотите обернуть каждую вторую строку в блок try-catch).

причина в том, что Javascript имеет это пресловутое значение undefined что поразительно, не означает, что переменная не определена, или не существует undefined !== not defined

var a;
alert(typeof a); // undefined (declared without a value)
alert(typeof b); // undefined (not declared)

Итак, как переменная, которая существует, так и другая, которая не может сообщить вам undefined тип.

что касается заблуждения @Kevin,null == undefined. Это связано с принуждением типа, и это главная причина, по которой Крокфорд продолжает говорить всем, кто не уверен в этом, всегда использовать оператор строгого равенства === для проверки возможных ложных значений. null !== undefined дает вам то, что вы могли бы ожидать. Обратите внимание, что foo != null может быть эффективным способом проверить, является ли переменная ни undefined, ни null. Конечно, вы можете быть явными, потому что это может помочь удобочитаемости.

если вы ограничиваете вопрос, чтобы проверить, существует ли объект,typeof o == "object" может быть хорошей идеей, за исключением случаев, когда вы не рассматриваете объекты массивов, так как это также будет сообщаться как тип object который может оставить вас немного смущенным. Не говоря уже о том, что typeof null также даст вам object это просто неправильно.

первичная область, где вы действительно должны быть осторожны typeof, undefined, null, unknown и другие тайны размещения объектов. Им нельзя доверять. Они вольны делать почти все, что им заблагорассудится. Поэтому будьте осторожны с ними, проверьте функциональность, если можете, потому что это единственный безопасный способ использовать функцию, которая может даже не существовать.


вы можете использовать:

if (typeof objectName == 'object') {
    //do something
}

двумя способами.

typeof для локальных переменных

Вы можете проверить локальный объект с помощью оператора typeof:

if (object !== "undefined") {}

окно глобальных переменных

вы можете проверить глобальный объект (определенный в глобальной области), проверив объект window:

if (window.FormData) {}

Если это глобальный объект, вы можете использовать if (!window.maybeObject)


вы можете использовать "typeof".

if(typeof maybeObject != "undefined")
    alert("GOT HERE");

я вобще if(maybeObject) как нулевая проверка в моих javascripts.

if(maybeObject){
    alert("GOT HERE");
}

Так, только если maybeObject - это объект, будет показано предупреждение. У меня есть пример на моем сайте.

https://sites.google.com/site/javaerrorsandsolutions/home/javascript-dynamic-checkboxes


Я только что протестировал примеры typeOf сверху, и никто не работал для меня, поэтому вместо этого я использовал это:

    btnAdd = document.getElementById("elementNotLoadedYet");
    if (btnAdd != null) {
       btnAdd.textContent = "Some text here";
    } else {
      alert("not detected!");
    }

помимо проверки существования объекта / переменной, вы можете предоставить вывод "худшего случая" или, по крайней мере, поймать его в оповещение, чтобы он не остался незамеченным.

пример функции, которая проверяет, предоставляет альтернативу и ловит ошибки.

function fillForm(obj) {
  try {
    var output;
    output = (typeof obj !== 'undefined') ? obj : '';
    return (output);
  } 
  catch (err) {
    // If an error was thrown, sent it as an alert
    // to help with debugging any problems
    alert(err.toString());
    // If the obj doesn't exist or it's empty 
    // I want to fill the form with ""
    return ('');
  } // catch End
} // fillForm End

Я создал это также потому, что объект, который я передавал ему, мог быть x, x.m, x.m[z] и тип x.m[z] потерпит неудачу с ошибкой, если x.м не существует.

надеюсь, это поможет. (Кстати, я новичок с JS)


установите значение текстового поля в один кадр для встроенного кадра с помощью панели с вкладками div alignmnt. Поэтому прежде всего, перед тем, как установить значение, нам нужно проверить выбранную рамку вкладок панели доступны или нет, используя следующие коды:

Код Javascript:

/////////////////////////////////////////
<script>

function set_TextID()
            {
                try
                    {
                        if(!parent.frames["entry"])
                            {
                            alert("Frame object not found");    
                            }
                            else
                            {
                                var setText=document.getElementById("formx").value;
                                parent.frames["entry"].document.getElementById("form_id").value=setText;
                            }
                            if(!parent.frames["education"])
                            {
                            alert("Frame object not found");    

                            }
                            else
                            {
                                var setText=document.getElementById("formx").value;
                                parent.frames["education"].document.getElementById("form_id").value=setText;
                            }
                            if(!parent.frames["contact"])
                            {
                            alert("Frame object not found");    

                            }
                            else
                            {
                                var setText=document.getElementById("formx").value;
                                parent.frames["contact"].document.getElementById("form_id").value=setText;
                            }

                        }catch(exception){}
                }

</script>

if (n === Object(n)) {
   // code
}

для меня это работает:

if(document.getElementsByClassName("classname").length != 0 ){
   alert("classname exist");
}

можно использовать ! оператор в два раза !!:

if (!!maybeObject)
  alert("maybeObject exists");

и один раз ! не существует:

if (!maybeObject)
  alert("maybeObject does not exist");

что такое !! (не) оператор в JavaScript?


if (maybeObject !== undefined)
  alert("Got here!");

думаю, это проще всего, как это

if(myobject_or_myvar)
    alert('it exists');
else
   alert("what the hell you'll talking about");

или вы все можете начать использовать мой эксклюзив () метод вместо этого и быть в состоянии делать вещи, считающиеся невозможными. т. е.:

такие вещи, как: exists("blabla"), или даже: exists("foreignObject.guessedProperty.guessNext.propertyNeeded") также возможно...