我正在尝试修复代码,但是我停在了两行代码上,它们太奇怪了,我无法理解它们。所有行:
//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
:
检查变量url
和this.last_product_url
之间的严格相等性,并将其分配给f
。f && productUrls.push(url)
:
如果f
是true
,则将url
推送到productUrls
。
其工作原理如下。将评估语句A && B
,但仅在B
为true时才检查A
,因为如果A
为false,则A && B
永远不会为true。因此,如果A
为true,则检查B
:推入URL。