Javascript 什么';str.indexOf(var&;var)的目的是什么?
我在一个库中发现我正在使用这段代码:Javascript 什么';str.indexOf(var&;var)的目的是什么?,javascript,slickgrid,Javascript,Slickgrid,我在一个库中发现我正在使用这段代码: item[column.field].indexOf(columnFilters[columnId] && columnFilters[columnId]) === -1) 我想知道将相同的值传递两次给indexOf的目的是什么。或者这只是一个错误,我可以纠正它 Library:(live)如果你像这样只写一次indexOf(columnFilters[columnId])如果你像这样只写一次indexOf(columnFilters[co
item[column.field].indexOf(columnFilters[columnId] && columnFilters[columnId]) === -1)
我想知道将相同的值传递两次给indexOf的目的是什么。或者这只是一个错误,我可以纠正它
Library:(live)如果你像这样只写一次indexOf(columnFilters[columnId])如果你像这样只写一次indexOf(columnFilters[columnId])那是一样的,坦白地说,这几乎肯定没有任何意义
columnFilters[columnId]&&columnFilters[columnId]
实际上与columnFilters[columnId]
相同,只是columnFilters[columnId]
可能会被计算两次(如果它是错误的)。除非columnFilters
中有一个名为columnId
的访问器属性具有副作用,&&
在那里完全没有意义。(如果是这样的话,如果结果是错误的,它将产生两次副作用。)
&&
计算其左操作数,如果它是假操作数,则将该值作为其结果;如果左侧操作数对truthy求值,&&
对右侧操作数求值并将该值作为其结果。因此,您可以看到为什么在这种情况下它毫无意义,除非它被用于访问器的副作用,在这种情况下,它只是…一个坏主意。:-) 坦白说,这几乎肯定没有任何意义columnFilters[columnId]&&columnFilters[columnId]
实际上与columnFilters[columnId]
相同,只是columnFilters[columnId]
可能会被计算两次(如果它是错误的)。除非columnFilters
中有一个名为columnId
的访问器属性具有副作用,&&
在那里完全没有意义。(如果是这样的话,如果结果是错误的,它将产生两次副作用。)
&&
计算其左操作数,如果它是假操作数,则将该值作为其结果;如果左侧操作数对truthy求值,&&
对右侧操作数求值并将该值作为其结果。因此,您可以看到为什么在这种情况下它毫无意义,除非它被用于访问器的副作用,在这种情况下,它只是…一个坏主意。:-) 我可以看到blah.indexOf(columnFilters&&columnFilters[columnId])==-1
在将columnFilters挖掘到它的一个属性/索引之前,验证它是否存在非常有用。“也许你打错了。”“詹姆斯:好的,是的,我是那个项目的维护者。”。我会把它拿走的,没有任何意义。这是一个示例,而不是核心代码,而且该代码的检查力度没有核心代码那么大。@BenMcIntyre谢谢,我只是想知道这是否有魔力;)这是开源项目的本质:-)代码是从不同的来源提交的,并经过不同程度的审查。我可以看到blah.indexOf(columnFilters&&columnFilters[columnId])===-1
在将其挖掘到某个属性/索引之前验证columnFilters是否存在非常有用。“也许你打错了。”“詹姆斯:好的,是的,我是那个项目的维护者。”。我会把它拿走的,没有任何意义。这是一个示例,而不是核心代码,而且该代码的检查力度没有核心代码那么大。@BenMcIntyre谢谢,我只是想知道这是否有魔力;)这是开源项目的本质:-)代码是从不同的来源提交的,并经过不同程度的审查