Javascript 为什么比较NodeList元素总是返回true和'=';假'===';?

Javascript 为什么比较NodeList元素总是返回true和'=';假'===';?,javascript,arrays,web-applications,nodelist,Javascript,Arrays,Web Applications,Nodelist,我正在做一个“匹配纸牌游戏”,并将选定的纸牌或点击存储在节点列表中。当比较索引时,我注意到它总是用“=”返回true,用“=”或“=”返回false。我原本打算使用数组来存储我的“点击”,但nodeList似乎更容易工作。也许这只是个错误?我的代码: //clicked cards function cardClick(picked) { this.classList.toggle('open'); this.classList.toggle('show'); let c

我正在做一个“匹配纸牌游戏”,并将选定的纸牌或点击存储在节点列表中。当比较索引时,我注意到它总是用“=”返回true,用“=”或“=”返回false。我原本打算使用数组来存储我的“点击”,但nodeList似乎更容易工作。也许这只是个错误?我的代码:

//clicked cards
function cardClick(picked) {
    this.classList.toggle('open');
    this.classList.toggle('show');
    let cardPicked = this.childNodes[1];
    timesClicked.push(cardPicked);

    let pickA = timesClicked[0];
    let pickB = timesClicked[1];

    if(timesClicked.length > 1){
        match(pickA,pickB);
    }


}
for (var i = 0; i < cardChild.length; i++) {
    card[i].addEventListener('click', cardClick);
}

function match(pickA,pickB) {
   if(pickA == pickB){
       console.log('yes');
   }else{
       console.log('no');
   }
}
//点击卡片
功能卡片点击(已拾取){
this.classList.toggle('open');
this.classList.toggle('show');
让cardPicked=this.childNodes[1];
点击时间。推送(卡片拾取);
让pickA=timeclicked[0];
让pickB=timeclicked[1];
如果(timesClicked.length>1){
匹配(pickA,pickB);
}
}
对于(变量i=0;i
无论是“是”还是“不是”,我的游戏都不会进展得很快。有什么想法吗?(我试过在节点列表中循环,但没有运气……)

它总是以“=”返回true

=
是一个赋值,而不是比较

用“==”或“==”表示为false

这只是因为所比较的值不同

设a=1;
控制台日志(a);
console.log(a==1);
console.log(a==2);
console.log(a=2);
控制台日志(a)
我注意到它总是用'='返回true,用'='或'='返回false

这是因为
=
将把项目分配到右侧的值。在
if
语句中,它将执行一般的“此项是否存在”检查。如果右侧为truthy,则始终为true


=
==
是比较

我明白你的意思。但是在我的代码中:if(a=b)总是返回true。if(a==b)总是返回false。不管值是多少。我假设Javascripts是如何解释节点的。因为“一切都是一个节点”(如果我理解正确的话…)@ab3d_work-No。你必须比较不同的节点。hmmmmmm。。。。。。。。谢谢你的见解。问题必须在我的代码中的其他地方