一个没有参数的javascript函数

时间:2014-11-19 09:49:44

标签: javascript jquery

我正在尝试理解JavaScript代码。

在没有任何参数的函数内调用Banana.reloadUser:

 function(data) {
                if (!data.result.success) {
                    alert(data.result.message)
                } else {

                    /*do something*/

                    Banana.testData = data;

                    Banana.reloadUser();
                } 
}

Banana.reloadUser定义如下:

Banana.extend({
        reloadUser: function(cb, data) {

            var that = this,
                done = function(d) {
                    $.extend(that.user, d);
                    if ($.isFunction(cb)) {
                        cb(d)
                    }
                    that.trigger("user.reloaded", [d])
                };
            if (data) {
                done.apply(banana, [data])
            } else {
                /*do something*/

            }
        }

})

' reloaduser'正在调用以在userstorage中保存userinfo数据。因此,每当用户从其帐户中执行新操作时,重新加载用户即可。将新信息保存到localstorage中。

我的问题是,因为没有参数调用Banana.reloadUser,它应该如何选择它的参数?

注意:这是大型JavaScript / jquery代码的一部分,因此如果此信息不够,请忽略该问题。

大的Javascript代码确实包含另一个函数

Banana.reloadUser(function() {

                try {
                    Banana.trigger('start', [$]);
                }catch(e) { }

                try {
                    $('[data-deferred]').deferredImage();;
                }catch(e) { }
            });

            started = true;
        };

2 个答案:

答案 0 :(得分:2)

如果您调用不带参数的JavaScript函数,则其所有参数都会收到undefined的值(不是null,这是一个不同的值)。

所以打电话

Banana.reloadUser()

与:

相同
Banana.reloadUser(undefined, undefined)

在您的代码中,这是完全正常的,条件:

if ($.isFunction(cb)) {

将失败,因为undefined不是函数,后来是条件:

if (data) {

也会失败,因为当undefined出现在需要布尔值的地方时,{{1}}被视为等效于假。

答案 1 :(得分:0)

它与以下调用完全相似,

Banana.reloadUser(undefined,undefined);