我正在尝试修复代码,但是我停在了两行代码上,它们太奇怪了,我无法理解它们。所有行:

//Extraction of urls
let f = !this.last_product_url
for(const productLink of productLinks) {
    const url = await productLink.getAttribute('href')

    if(!f) {
        f = url === this.last_product_url
        f && productUrls.push(url)
    }
    else {
        productUrls.push(url)
    }
}
这两行是做什么的:
f = url === this.last_product_url
f && productUrls.push(url)

最佳答案

从语法上讲,这是发生的情况:f = url === this.last_product_url:
检查变量urlthis.last_product_url之间的严格相等性,并将其分配给f
f && productUrls.push(url):
如果ftrue,则将url推送到productUrls
其工作原理如下。将评估语句A && B,但仅在B为true时才检查A,因为如果A为false,则A && B永远不会为true。因此,如果A为true,则检查B:推入URL。

09-30 19:16