str.indexOf(var && var)的目的是什么?

Cla*_*nga 1 javascript slickgrid

我在一个库中发现我正在使用以下代码:

item[column.field].indexOf(columnFilters[columnId] && columnFilters[columnId]) === -1)
Run Code Online (Sandbox Code Playgroud)

我想知道将相同的值两次传递给indexOf的目的是什么。还是只是一个错误,我可以纠正它。

库:https : //github.com/6pac/SlickGrid/blob/master/examples/example16-row-detail.html(实时http://6pac.github.io/SlickGrid/examples/example16-row-detail.html

T.J*_*der 6

坦白说,在那几乎没有任何意义。columnFilters[columnId] && columnFilters[columnId]实际上是相同的columnFilters[columnId],只是columnFilters[columnId]可能会两次评估(如果它的falsy)。除非columnFilters具有其名称columnId具有副作用的accessor属性,否则在&&那里毫无意义。(如果这样做,如果结果是虚假的,它将导致其副作用两次。)

&&评估其左操作数,如果它是伪造的,则以该值作为结果;如果左侧操作数的评估结果为“真”,则&&评估右侧操作数的评估结果,并将该值作为结果。因此,您可以看到为什么在这种情况下它毫无意义,除非它被用于访问器的副作用,在这种情况下,这只是一个坏主意。:-)