что происходит с присвоением переменной javascript несуществующей переменной

#javascript #jquery

#javascript #jquery

Вопрос:

Я присваиваю переменной javascript значение как

 var newline = $("#newline").val();
  

$("#newline").val() Может существовать, а может и не существовать (в некоторых случаях #newline может не существовать в DOM, или даже если оно существует, оно может не иметь никакого значения).

Я хочу проверить, var newline установлено или нет. Как мне это сделать?

Ответ №1:

Это сводится к тому, «Что возвращает метод jQuery val , если в DOM нет элементов, соответствующих селектору?»

Ответ на это undefined такой:

 if ( typeof newline === "undefined" ) {

}
  

Комментарии:

1. Это вернет пустую строку, хотя, когда селектор действительно соответствует некоторым элементам, но первый сопоставленный элемент не имеет value атрибута. Начиная с jQuery 1.6, вы можете использовать, $('...').prop('value') если хотите провести различие между пустым значением и отсутствием значения вообще ( prop всегда возвращает undefined, если нет атрибута value).

Ответ №2:

jQuery:

 (function() {
    if (this amp;amp; this[0] amp;amp; this[0].value) {
        // Has a value
    } else {
        // Has no value    
    }    
}).call($("#newline"));
  

this[0] это сам HTML-элемент, а не объект jQuery.

Чистый JavaScript:

 (function() {
    if (this amp;amp; this.value) {
        // Has a value
    } else {
        // Has no value    
    }    
}).call(document.getElementById("newline"));
  

Комментарии:

1. Если нет элемента с таким идентификатором, то вы будете пытаться получить доступ к правильно принадлежащей неопределенной переменной, что приведет к ошибке и завершению работы скрипта.