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

时间:2019-09-03 09:29:49

标签: javascript slickgrid

我在一个库中发现我正在使用这段代码:

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

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

如果您只写一次indexOf(columnFilters[columnId])

,就一样