0

我以前见过这样做,类似window.foo || {}(我知道这是行不通的),但我不记得这是如何完成的。我想在这种情况下使用它:

(function(foo){
    foo.bar = "bar";
})(window.foo || {});

我该怎么做呢?

4

2 回答 2

1

你要这个:

(function(foo){
    foo.bar = "bar";
})(window.foo || (window.foo = {}));
  • window.foo如果存在则取并作为参数传递

  • 或者创建一个新对象window.foo并将其作为参数传递

于 2013-10-28T17:02:56.877 回答
1

我相信您所描述的模式将检查全局窗口对象的属性foo。如果没有找到,它将默认为空对象。window.foo如果您需要某种默认值而不仅仅是一个空对象,您可以为其分配一个值:

window.foo || (window.foo = "Gibberish and Goblins, oh my!")

于 2013-10-28T17:03:31.957 回答