Является ли переменная 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"
. (Кроме того, нет конкатенации строк.)
Ответ 4
http://constc.blogspot.com/2008/07/undeclared-undefined-null-in-javascript.html
Зависит от того, насколько конкретно вы хотите, чтобы тест был. Вы могли бы уйти с
if(page_name){ string += "&page_name=" + page_name; }
Ответ 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; }