1.回调函数返回值问题
在递归函数从数组中中取出指定的数据时 ,return 返回的值除了第一层之外总是 undefind
在递归调用时加return ; 因为 return 第一次返回时只是结束当前的方法,return 后,后面的递归其实会接着走,所以给递归函数一个return就行.
public leafId2Region(nodeId: any, regionList: any): any {
let self = this;
for (let i = 0; i < regionList.length; i++) {
let regionListInfo = regionList[i];
if (regionListInfo.id === nodeId) {
if (regionListInfo.pid === '550e8400-e29b-41d4-a716-446655440000') {
let regionObj: any = {};
return regionObj;
} else {
// 这里要return
return self.leafId2Region(regionListInfo.pid, regionList);
}
}
}
}
2.判断undefined的问题
不能直接用属性判断undefined,如果属性值是0,则会出现问题,需要用第二种方式判断保险
if(obj.default){
alert("yes");
}else{
alert("no");
}
if(obj.default !== undefined){
alert("yes");
}else{
alert("no");
}
3.js声明arr:any,不能直接arr.push()