我正在创建一个变量,其值由特定方法确定。此特定方法应返回具有两个属性的对象。但是,在方法返回后,变量未定义。我在它返回之前检查对象值并且它很好。因此,变量的返回和实例化之间会发生一些事情,导致它未定义。这是一段代码:
var results = findTarget(target, after, append); //undefined
function findTarget(target, after, append){
var currenttemplate = $(target).attr('data-template');
for(var i=0; i<after.length; i++){
if(after[i] === currenttemplate)
return {target : target, drop : "after"};
}
for(var j=0; j<append.length; j++){
if(append[j] === currenttemplate){
var obj = {target : target, drop : "append"};
console.log(obj); //is fine here
return obj; //this gets returned
}
}
if(currenttemplate === threshold) {
return "";
}
findTarget($(target).parent()[0], after, append);
}
答案 0 :(得分:3)
您最后需要添加return
:
function findTarget(target, after, append){
/* ... */
return findTarget($(target).parent()[0], after, append);
}
如果没有,则递归调用findTarget
,并且此递归调用返回适当的值,但第一次调用findTarget
不会返回它。