关于jquery:变量是否未定义

Whether a variable is undefined

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Best way to check for"undefined" in JavaScript?

如何确定变量是否未定义?

我目前有:

1
2
3
4
5
6
7
8
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; }


对于空选择,jquery.val()和.text()永远不会返回"undefined"。它始终返回空字符串(即")。如果元素不存在,.html()将返回空值。您需要执行以下操作:

1
if(page_name != '')

对于其他不来自jquery.val()之类的变量,您可以这样做:

1
if(typeof page_name != 'undefined')

你只需要使用typeof操作符。


if (var === undefined)

或者更准确地说

if (typeof var === 'undefined')

注:使用===


1
2
3
4
5
6
7
8
9
10
11
12
13
14
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"。(而且,没有任何字符串连接。)


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

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

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

您可以直接检查变量。如果没有定义,它将返回一个错误的值。

1
2
3
4
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; }