变量是否未定义

时间:2009-09-28 07:32:16

标签: jquery

  

可能重复:
  Best way to check for “undefined” in JavaScript?

如何查找变量是否未定义?

我目前有:

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; }

5 个答案:

答案 0 :(得分:298)

jQuery.val()和.text()永远不会为空选择返回'undefined'。它总是返回一个空字符串(即“”)。如果元素不存在,.html()将返回null。你需要这样做:

if(page_name != '')

对于其他不是来自jQuery.val()之类的变量,你会这样做:

if(typeof page_name != 'undefined')

您只需使用typeof运算符即可。

答案 1 :(得分:109)

if (var === undefined)

或更准确地说

if (typeof var === 'undefined')

注意使用了===

答案 2 :(得分: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"。 (此外,没有任何字符串连接。)

答案 3 :(得分:2)

http://constc.blogspot.com/2008/07/undeclared-undefined-null-in-javascript.html

取决于您希望测试的具体程度。你也许可以逃脱

if(page_name){ string += "&page_name=" + page_name; }

答案 4 :(得分:-7)

您可以直接检查变量。如果未定义,则返回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; }