Является ли переменная undefined

Возможный дубликат:
Лучший способ проверить "undefined" на JavaScript?

Как найти переменную undefined?

В настоящее время у меня есть:

var page_name = $("#pageToEdit :selected").text();
var table_name = $("#pageToEdit :selected").val();
var optionResult = $("#pageToEditOptions :selected").val();

var string = "?z=z";
if ( page_name != 'undefined' ) { string += "&page_name=" + page_name; }
if ( table_name != 'undefined' ) { string += "&table_name=" + table_name; }
if ( optionResult != 'undefined' ) { string += "&optionResult=" + optionResult; }

Ответы

Ответ 1

jQuery.val() и .text() никогда не вернут 'undefined' для пустого выбора. Он всегда возвращает пустую строку (т.е. "")..html() вернет значение null, если элемент не существует. Вам нужно сделать:

if(page_name != '')

Для других переменных, которые не исходят из чего-то вроде jQuery.val(), вы сделали бы это:

if(typeof page_name != 'undefined')

Вам просто нужно использовать оператор typeof.

Ответ 2

if (var === undefined)

или более точно

if (typeof var === 'undefined')

Обратите внимание, что используется ===

Ответ 3

function my_url (base, opt)
{
    var retval = ["" + base];
    retval.push( opt.page_name ? "&page_name=" + opt.page_name : "");
    retval.push( opt.table_name ? "&table_name=" + opt.table_name : "");
    retval.push( opt.optionResult ? "&optionResult=" + opt.optionResult : "");
    return retval.join("");
}

my_url("?z=z",  { page_name : "pageX" /* no table_name and optionResult */ } );

/* Returns:
     ?z=z&page_name=pageX
*/

Это позволяет избежать использования typeof whatever === "undefined". (Кроме того, нет конкатенации строк.)

Ответ 5

Вы можете просто проверить переменную напрямую. Если он не определен, он вернет значение falsy.

var string = "?z=z";
if (page_name) { string += "&page_name=" + page_name; }
if (table_name) { string += "&table_name=" + table_name; }
if (optionResult) { string += "&optionResult=" + optionResult; }