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

item[column.field].indexOf(columnFilters[columnId] && columnFilters[columnId]) === -1)


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

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

最佳答案

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

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

08-05 21:36