一个不带参数的 JavaScript 函数

a javascript function called without arguments

本文关键字:参数 JavaScript 函数 一个      更新时间:2023-09-26

我正在尝试理解JavaScript代码。

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

 function(data) {
                if (!data.result.success) {
                    alert(data.result.message)
                } else {
                    /*do something*/
                    Banana.testData = data;
                    Banana.reloadUser();
                } 
}

Banana.reload用户定义如下:

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"以将用户信息数据保存在本地存储中。因此,每当用户从其帐户执行新操作时,"reloaduser"都会将新信息保存到本地存储中。

我的问题是,既然 Banana.reloadUser 被调用而没有参数,它应该如何选择它的参数?

注意:这是一个大的JavaScript/jquery代码的一部分,所以如果这些信息还不够,请忽略这个问题。

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

Banana.reloadUser(function() {
                try {
                    Banana.trigger('start', [$]);
                }catch(e) { }
                try {
                    $('[data-deferred]').deferredImage();;
                }catch(e) { }
            });
            started = true;
        };

如果你调用一个没有参数的 JavaScript 函数,那么它的所有参数都会收到一个值 undefined(而不是null这是一个不同的值)。

所以打电话

Banana.reloadUser()

与以下相同:

Banana.reloadUser(undefined, undefined)

在您的代码中,这是完全可以的,条件是:

if ($.isFunction(cb)) {

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

if (data) {

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

它与下面的调用完全相似,

Banana.reloadUser(undefined,undefined);