我在一个库中发现我正在使用这段代码:
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)
答案 0 :(得分:6)
坦率地说,几乎可以肯定那里没有任何意义。 columnFilters[columnId] && columnFilters[columnId]
与columnFilters[columnId]
实际上是一样的,除了columnFilters[columnId]
可能得到两次评估(如果是虚假的)。除非columnFilters
具有在columnId
中具有副作用的名称的访问器属性,否则&&
在那里毫无意义。 (如果这样做,结果虚假将导致其副作用两次。)
&&
评估其左操作数,如果它是伪造的,则以该值作为结果;如果左侧操作数评估为真,则&&
评估右侧操作数并将该值作为结果。因此,您可以看到为什么在这种情况下它毫无意义,除非它被用于访问器的副作用,在这种情况下,这只是一个坏主意。 :-)
答案 1 :(得分:1)
如果您只写一次indexOf(columnFilters[columnId])