我有一些代码:

var obj = {
    foo : true,
    bar : (function() {
        if (obj.foo) {
            return qux;
        }
    })()
};


我的问题是qux永远不会返回,因为obj执行时bar不存在,因为bar是立即调用的函数。

有一个解决方案:

var obj = {
    foo : true
};

obj.bar = (function() {
    if (obj.foo) {
        return qux;
    }
})();


但是我发现以前的代码更直接。有没有办法做到这一点,或者我坚持后者?

提前致谢。

最佳答案

有没有办法做到这一点,或者我坚持后者?


假设qux不是IIFE的局部变量,则可以使用它(不过,仍然需要拆分对象声明):

var obj = {
    foo : true
};
obj.bar = obj.foo ? qux : undefined;

09-10 11:20
查看更多