我正在尝试理解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;
};
答案 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);