【问题标题】:Weird Error Occurred During Function Run函数运行期间出现奇怪的错误
【发布时间】:2012-01-15 10:53:17
【问题描述】:

我有以下功能:

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,因为该功能确实有效,并且假设发生的一切都发生了?

【问题讨论】:

  • 我在想,如果函数正常工作并且其他一切都正确触发,那么问题一定出在 if 语句的某个地方。如果将该行更改为 console.log(appendStructure.init(wrapper.login, structure.login, '.content-login')); 会得到什么?我很想知道 if 试图评估什么。
  • @Mark Tabler,如果我将 console.log('Error') 更改为 console.log(appendStructure.init(wrapper.login, structure.login, '.content-login'));,它将返回 undefined

标签: javascript jquery function console


【解决方案1】:

appendStructure.init 没有return 任何值,因此返回值将是undefinedundefined 的计算结果为 false,因此您的 if...else 语句的 else 分支将被执行。

【讨论】:

  • 确实,它在控制台中返回 undefined ,所以这意味着该函数没有问题?我这样做是因为我想看看如果我运行这个函数是否会发生什么事情,我在尝试编译它时遇到了一些问题,我认为用if()检查至少会给我一个线索。还有其他方法可以检查函数是否实际运行?
  • 您可以使用try...catch 查找函数是否抛出错误,然后采取相应措施。
  • 哦,就像我对 PHP 所做的那样。谢谢:)
猜你喜欢
  • 2016-08-06
  • 1970-01-01
  • 2011-02-07
  • 2014-12-20
  • 2017-01-03
  • 2016-07-27
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多