Как мне проверить существование объекта в JavaScript?
Следующие работы:
if (!null)
   alert("GOT HERE");
Но это выдает ошибку:
if (!maybeObject)
   alert("GOT HERE");
Ошибка:
maybeObjectне определено.
Как мне проверить существование объекта в JavaScript?
Следующие работы:
if (!null)
   alert("GOT HERE");
Но это выдает ошибку:
if (!maybeObject)
   alert("GOT HERE");
Ошибка:
maybeObjectне определено.
Вы можете безопасно использовать оператор typeof для переменных undefined.
Если ему присвоено какое-либо значение, включая 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 и других misteries, являются объектами хоста. Им нельзя доверять. Они могут делать практически любую грязную вещь, которую они хотят. Поэтому будьте осторожны с ними, проверяйте функциональность, если можете, потому что это единственный безопасный способ использования функции, которая может даже не существовать.
Вы можете использовать:
if (typeof objectName == 'object') {
    //do something
}
Два пути.
Вы можете проверить локальный объект, используя typeof:
if (typeof object !== "undefined") {}
Вы можете проверить глобальный объект (определенный в глобальной области), проверив объект окна:
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) {
       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 empty 
    // I want to fill the form with ""
    return ('');
  } // catch End
} // fillForm End
Я создал это также потому, что объект, который я передавал ему, мог быть x, x.m, x.m [z] и typeof x.m [z] с ошибкой, если x.m не существует.
Надеюсь, это поможет. (BTW, я новичок с JS)
для меня это сработало для DOM-объекта:
if(document.getElementsById('IDname').length != 0 ){
   alert("object exist");
}
 Вы можете использовать ! оператор дважды !! :
if (!!maybeObject)
  alert("maybeObject exists");
 Или один раз ! ибо не существует:
if (!maybeObject)
  alert("maybeObject does not exist");
Тема была открыта довольно давно. Тем временем я думаю, что использование троичного оператора является самым простым вариантом:
maybeObject ? console.log(maybeObject.id) : ""
if (n === Object(n)) {
   // code
}
Если вы заботитесь только о его существовании (было ли оно объявлено?), Достаточно утвержденного ответа:
if (typeof maybeObject != "undefined") {
   alert("GOT THERE");
}
Если вас волнует фактическое значение, вы должны добавить:
if (typeof maybeObject != "undefined" && maybeObject != null ) {
   alert("GOT THERE");
}
 Как typeof( null ) == "object"
 например, bar = { x: 1, y: 2, z: null}
typeof( bar.z ) == "object" 
typeof( bar.not_present ) == "undefined" 
 таким образом вы проверяете, что он не имеет null или undefined, и так как typeof не typeof ошибку, если значение не существует плюс && короткое замыкание, вы никогда не получите ошибку во время выполнения.
 Лично я бы предложил добавить куда-нибудь помощник fn (и пусть не доверяет typeof()):
function exists(data){
   data !== null && data !== undefined
}
if( exists( maybeObject ) ){
    alert("Got here!"); 
}
if (maybeObject !== undefined)
  alert("Got here!");
установите значение текстового поля в один кадр для встроенного фрейма с помощью панели вкладок 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>
ноль и ноль являются неявными указателями. Если вы не выполняете арифметику, сравниваете или выводите "0" на экран, нет необходимости его набирать. Это неявное. Как и подразумевается. Typeof также не требуется по той же причине. Часы.
if (obj) console.log("существует");
Я не видел запрос на нет или еще там, поскольку он не включен как. Столько, сколько я люблю дополнительный контент, который не вписывается в вопрос. Давайте будем проще.
Думайте, что это проще всего
if(myobject_or_myvar)
    alert('it exists');
else
   alert("what the hell you'll talking about");
Или вы можете начать использовать мой эксклюзивный метод exists() и сделать что-то невозможным. то есть:.
Возможно также такие вещи, как: exists("blabla") или даже: exists("foreignObject.guessedProperty.guessNext.propertyNeeded")...