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

What's the purpose of str.indexOf(var && var)?

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

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

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

图书馆:https://github.com/6pac/SlickGrid/blob/master/examples/example16-row-detail.html (live http://6pac.github.io/SlickGrid/examples/example16-row-detail.html)

这样写一次也一样indexOf(columnFilters[columnId])

坦率地说,它几乎肯定没有任何意义。 columnFilters[columnId] && columnFilters[columnId] 实际上与 columnFilters[columnId] 相同,只是 columnFilters[columnId] 可能会被计算两次(如果它是假的)。除非 columnFilters 的访问器 属性 的名称在 columnId 中有副作用,否则 && 在那里完全没有意义。 (如果是这样,如果结果是假的,它会产生两次副作用。)

&& 评估其左侧操作数,如果为假,则将该值作为其结果;如果左侧操作数的计算结果为真,则 && 计算右侧操作数并将该值作为结果。所以你可以明白为什么它在这种情况下毫无意义,除非它被用于访问器的副作用,在这种情况下它只是......一个坏主意。 :-)