如何在javascript中传递参数以确保它';s的引用存在

如何在javascript中传递参数以确保它';s的引用存在,javascript,Javascript,我以前见过类似于window.foo |{}(我知道这不起作用)的东西,但我不记得是怎么做到的。我想在这个场景中使用它: (function(foo){ foo.bar = "bar"; })(window.foo || {}); 我该怎么做?您想要这个: (function(foo){ foo.bar = "bar"; })(window.foo || (window.foo = {})); 如果存在window.foo,则将其作为参数传递 或者创建一个新对象window

我以前见过类似于
window.foo |{}
(我知道这不起作用)的东西,但我不记得是怎么做到的。我想在这个场景中使用它:

(function(foo){
    foo.bar = "bar";
})(window.foo || {});
我该怎么做?

您想要这个:

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

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


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


window.foo | |(window.foo=“胡言乱语和地精,天哪!”)
(window.foo | |(window.foo={})@Ibu代码不包含语法错误,但您将无法获取
foo.bar
。好的,所以我必须重新=键入window.foo?我认为有一种方法可以不用这个。也许没有,我不记得在哪里见过它。如果有一种方法不需要重新键入,我会说在作业中显式更具可读性——我还是这样写的。如果foo是
0,NaN,“,等等……会发生什么then@ajax333221你是对的,这个答案有严重的局限性。Javascript处理“虚假”值的方式深深困扰着我。在您认为您将遇到这些值的情况下,我将编写一个帮助器方法来检查任何要考虑false的值,并使用该值而不是使用默认检查。