我在一个库中发现我正在使用以下代码:
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
中具有副作用的名称的访问器属性,否则&&
在那里毫无意义。 (如果这样做,如果结果是虚假的,它将导致其副作用两次。)&&
计算其左操作数,如果它是伪造的,则以该值作为结果;如果左侧操作数的评估结果为“真”,则&&
评估右侧操作数的评估结果,并将该值作为结果。因此,您可以看到为什么在这种情况下它毫无意义,除非它被用于访问器的副作用,在这种情况下,这只是一个坏主意。 :-)