variableFoo && functionBar()在javascript中做什么?

Mar*_*ark 2 javascript comparison expression

我最近遇到了一些看起来像这样的Javascript代码:

var foo = 'blah';

bar = function(){
   // append some content to the body   
}

doStuff = function(){

   if(somethingIsTrue){
    // do something
   } else {
    // do something else       
   }

   foo && bar();
}

doStuff();
Run Code Online (Sandbox Code Playgroud)

foo && bar()表达式以"undefined"的形式登录到控制台.

我明白为什么它可以调用bar函数从doStuff函数内部运行,但为什么它被用作foo变量的比较表达式?

Vic*_*Vic 6

它表示bar()仅在foo定义时调用.

基本相同:

if (foo){
    bar();
}
Run Code Online (Sandbox Code Playgroud)

  • +1.这是我认为的一种常见模式,而我发现在可读性方面,好处(短期)不值得失去... (2认同)