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
中有副作用,否则 &&
在那里完全没有意义。 (如果是这样,如果结果是假的,它会产生两次副作用。)
&&
评估其左侧操作数,如果为假,则将该值作为其结果;如果左侧操作数的计算结果为真,则 &&
计算右侧操作数并将该值作为结果。所以你可以明白为什么它在这种情况下毫无意义,除非它被用于访问器的副作用,在这种情况下它只是......一个坏主意。 :-)
我在库中发现我正在使用这段代码:
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
中有副作用,否则 &&
在那里完全没有意义。 (如果是这样,如果结果是假的,它会产生两次副作用。)
&&
评估其左侧操作数,如果为假,则将该值作为其结果;如果左侧操作数的计算结果为真,则 &&
计算右侧操作数并将该值作为结果。所以你可以明白为什么它在这种情况下毫无意义,除非它被用于访问器的副作用,在这种情况下它只是......一个坏主意。 :-)