提问者:小点点

节点JS。 如何理解s1=s2===s3和s1&&s2?


我正在尝试修复代码,但我停在两行代码上,它们是如此怪异以至于我无法理解它们。 所有行:

//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)

共3个答案

匿名用户

从句法上讲,情况如下:

F=url===this.last_product_url:

检查变量urlthis.last_product_url之间是否严格相等,并分配给f

F&& producturls.push(url):

如果Ftrue,则将url推送到producturls

其工作原理如下。 语句a&& 计算b,但仅当a为true时才检查b,因为如果a为false,则a&& B永远不为真。 因此,如果a为真,则检查b:推送url。

匿名用户

F=url===this.last_product_urlurl===this.last_product_url的结果分配给F。

f和; producturls.push(url)如下所示:

if(f) productUrls.push(url)

匿名用户

f=url===this.last_product_url等价于

if (url === this.last_product_url) {
 f = true;
} else {
 f = false;
}

F&& producturls.push(url)等效于

if (f) {
 productUrls.push(url)
}