Javascript 为什么此警报包含未定义的内容?

Javascript 为什么此警报包含未定义的内容?,javascript,jquery,jstree,Javascript,Jquery,Jstree,这是我的代码,它从jsTree复选框树列表中获取选项: var level1, r = []; for (i = 0, j = data.selected.length; i < j; i++) { r[0] = data.instance.get_node(data.selected[i]).text.trim(); r[1] = data.instance.get_node(data.selected[i]).parents.length; if(r[1]

这是我的代码,它从jsTree复选框树列表中获取选项:

var level1, r = [];

for (i = 0, j = data.selected.length; i < j; i++) {
    r[0] = data.instance.get_node(data.selected[i]).text.trim();
    r[1] = data.instance.get_node(data.selected[i]).parents.length;

    if(r[1] == 1) {
       level1 += r[0] + ", ";
       alert(level1);
    }
}
var级别1,r=[];
对于(i=0,j=data.selected.length;i

上面的
警报
包含
未定义
以及复选框中的正确选项。知道我为什么在输出中没有定义吗?

问题是当您第一次尝试在此处使用时,
level1
没有定义:

level1 += r[0]+", ";
这与:

level1 = level1 + r[0]+", ";
问题是
level1
在第一次迭代中未定义,因此文本包含
undefined
,并将其串联在一起,将
“undefined”
强制连接为字符串。将其初始化为空字符串:

var level1 = "";
这样,当您访问它时,它将不会被取消定义。

var级别1,r=[];
对于(i=0,j=data.selected.length;i}
请同时发布您的HTML代码,以便更好地理解。
var level1;var r=[]
level1=r[0]+“,”尝试此操作您的level1变量未定义。。将空白字符串指定给它,以便可以连接到。。是否要将空白数组分配给两个变量?那样的话,它应该​ 类似于var a=b=someval,以便将相同的val分配给两个var。。确保你首先定义了两个变量,否则第二个变量将是globalProps给Alien先生-我有点尴尬<代码>风险等级1=''
DOH!!!抱歉,谢谢,阿奇努布,谢谢。字符串确实是一个问题,但是,正如它所发生的那样,上面解决了我在其他地方面临的另一个问题!太棒了@Homer_J“是一个数组,因为您将其声明为…”-您在哪里看到的?它们显式连接一个字符串,因此它可能是一个string@AndrewLi啊,你说得对。我错误地认为,
var-some,some1=[]
使some和some1==[]同时存在。但它实际上使一些===未定义,而另一些==[]。我更新了答案以适应更正。谢谢@荷马和你下一个问题是如何不在后面加逗号@我也这么想xD