我有以下功能,我体验到函数启动有时会在没有params.name设置的情况下调用。我在异步函数中不是那么强,所以我想知道这是否因为setName在调用启动之前不一定返回?
然后它会帮助在self.params
的初始化中将函数调用放在三元组中吗?
projectLaunch: function(options) {
var self = this;
if (options.name === null || options.name === "undefined") {
var name = self.setName();
} else {
var name = options.name;
};
self.params = {
name: name
};
launch(self.params);
},
setName = function() {
return encodeBase64(User.name, Project.name)
}
这是一个更大的对象的所有部分,函数projectLaunch在外部调用。
答案 0 :(得分:1)
这里没有异步(我没有encodeBase64
的实现,但我不明白为什么它会异步)。
但是这不会将函数分配给任何名称,也不会调用它:
function(options) {
...
}
因此无法从我们看到的代码中调用launch
。
如果您想制作IIFE,请将其修改为
(function(options) {
...
})({});
如果您期望options.name
中的非空字符串,使用传递的值或另一个最简单的解决方案是:
var name = options.name || self.setName();