"|| 0"在JavaScript中有什么作用?

Dor*_*rus 0 javascript

我有一段JavaScript代码显示:

function(next, feather) {
  var l = Number(171) + (next || 0);
  var m = Math.max(1, l - 9);
  return {
    lc: 300 * (l + 1) * m + (5 * feather || 0)
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我已经简化了一点.但任何人都可以解释"|| 0"的作用吗?据我所知,它什么也没做.

(注意我用Number(171)替换了一个函数,因为该函数有效地返回一个数字,羽毛也应该是一个数字,大部分时间是0,有时是1).

Sam*_*son 7

如果next假的,0将在其位置使用.JavaScript没有默认值运算符,因此用户已经利用了这种方法,即使该语言的创建者将其称为滥用.

答案的生气蓬勃的例证


p.s*_*w.g 5

好吧,如果你知道 next并且feather是数字,那么是的,它没有任何功能.但是,如果你要传递一个类似的值undefined,这实际上是在没有指定任何参数的情况下调用函数会发生的情况,你会看到一些区别:

var next = undefined;
console.log(171 + next);        // NaN
console.log(171 + (next || 0)); // 171
Run Code Online (Sandbox Code Playgroud)

当然,这不是一个万无一失的方法.传递null对计算没有影响,并通过一个非空字符串(例如"1"),将导致一些非常不同的.