我有以下代码,当我运行代码时,警告显示> undefined<但if条件无法比较字符串。
我将item.category
放入新的var
但没有帮助。
$.widget("custom.catcomplete", $.ui.autocomplete, {
_create : function() {
this._super();
this.widget().menu("option", "items",
"> :not(.ui-autocomplete-category)");
},
_renderMenu : function(ul, items) {
var that = this, currentCategory = "";
$.each(items, function(index, item) {
var li;
if (item.category != currentCategory) {
if(item.category != "undefined"){//it does not work!
alert(">" + item.category + "<"); //returns >undefined<
ul.append("<li class='ui-autocomplete-category'><b>"
+ item.category + "</b></li>");
}else{
alert("not");
ul.append("<li class='ui-autocomplete-category'></li>");
}
currentCategory = item.category;
}
li = that._renderItemData(ul, item);
if (item.category) {
li.attr("aria-label", item.category + " : "
+ item.label);
}
});
}
});
答案 0 :(得分:2)
如果你想将undefined与一个用typeof得到的字符串进行比较,那么就给你一个例子
hasMany competitors
答案 1 :(得分:1)
mate,undefined是一个不是字符串的类型,
item.category != "undefined"
TO:
typeof item.category !== 'undefined'
或者:
if(item.category)
{
//code
}
答案 2 :(得分:0)
item.category
只是undefined
。 undefined
值与"undefined"
字符串不同。
undefined == 'undefined'; //false
但是,将undefined
转换为字符串将产生"undefined"
。在字符串和任何其他数据类型之间使用+
运算符时,其他数据类型将首先转换为字符串。
alert(">" + item.category + "<");
与alert(">" + String(item.category) + "<");
现在,如果您想知道某个变量是否未定义,您可以使用typeof
运算符。
if (typeof item.category == 'undefined') { //undefined }
如果您想查看null
或undefined
,可以使用:
if (item.catgegory == null) { //null or undefined }