2012-01-15 48 views
0

我有以下功能:奇怪的错误发生在函数运行

var appendStructure = { 

     init : function(wrapper,structure,cls,callback) { 

      $(wrapper).appendTo(container).hide() 
      var object = $(container).find(cls); 
      $(structure.join('')).appendTo(object); 
      showObj(object,function() { 
       if(opts.centerObj == true) { 
        $(window).resize(function() { 
         var cssProps = getProps(object); 
         object.css(cssProps); 
        }); 
       } 
       if(typeof callback == 'function') { 
        callback(); 
       } 
      }); 

     } 
} 

这被称为内它的其他职能:

var getProps = function(obj) { 
    return { 
     'position' :'absolute', 
     'top' : (($(window).height() - $(obj).outerHeight())/2)+'px', 
     'left' : (($(window).width() - $(obj).outerWidth())/2)+'px' 
    } 
} 

var showObj = function(obj,callback) { 
    return setTimeout(function() { 
     if(opts.centerObj == true) { 
      var cssProps = getProps(obj); 
      obj.css(cssProps).fadeIn('slow'); 
     } 
      else { 
       obj.fadeIn('slow'); 
      } 
     if(typeof callback == 'function') { 
      callback(); 
     } 
    }, 1500); 
} 

而且我会像这样的功能:

if(appendStructure.init(wrapper.login,structure.login,'.content-login')){ 
     console.log('Object Appended'); 
    } 
     else { 
      console.log('Error'); 
     } 

我的问题是,为什么控制台输出Error,因为该功能实际上工作并且所有可能发生的事情都会发生?

+0

我在想如果函数能够正常工作并且其他所有东西都能正确地启动,那么问题肯定在if语句中的某处。如果将该行更改为'console.log(appendStructure.init(wrapper.login,structure.login,'.content-login'));'?我有兴趣知道该如何进行评估。 – 2012-01-15 10:58:42

+0

@Mark Tabler,如果我将'console.log('Error')'改为'console.log(appendStructure.init(wrapper.login,structure.login,'.content-login')),它会返回'undefined') ;'。 – Roland 2012-01-15 11:02:07

回答

5

appendStructure.init没有return任何值,因此返回值将是undefinedundefined评估为false,因此您的if...else语句的else分支会执行。

+0

的确,它在控制台中返回undefined,所以这意味着这个函数没有错?我这样做是因为我想看看如果我运行该函数是否会发生什么事,在编译它时我遇到了一些问题,我认为用if()来检查会让我至少有一点线索。是否有另一种方法来检查一个函数是否实际运行? – Roland 2012-01-15 11:04:31

+1

您可以使用try ... catch来发现函数是否抛出错误,然后采取相应措施。 – 2012-01-15 11:12:22

+0

哦,就像我会用PHP做的一样。谢谢 :) – Roland 2012-01-15 11:17:36