foo || (foo = this.foo)它做了什么?

Aki*_*nza 1 javascript backbone.js

我想知道这行是做什么的:

foo || (foo = this.foo)
Run Code Online (Sandbox Code Playgroud)

在以下函数定义中

someFunction: function(foo)  
{   
    foo || (foo = this.foo);  
    ...  
}
Run Code Online (Sandbox Code Playgroud)

Abd*_*aly 6

这通常可以写成:

someFunction: function(foo)  
{   
    foo = foo || this.foo;
    // do something with foo
}
Run Code Online (Sandbox Code Playgroud)

它只是将foo参数设置为上下文的foo实例变量,如果:

  • someFunction 没有参数调用
  • someFunction使用falsy诸如false,空字符串,0,null或undefined之类的参数调用.

举个例子,假设someFunction是在对象文字中定义的,如下所示:

var myObject = {
    foo: "default value of foo",
    someFunction: function(foo)  
    {   
        foo = foo || this.foo;
        // do something with foo
    }
}
Run Code Online (Sandbox Code Playgroud)

这样,如果需要,someFunction参数可以foo回退到默认值.