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

时间:2018-08-07 18:37:45

标签: javascript arrays web-applications nodelist

我正在研究“匹配纸牌游戏”,并将选定的纸牌或点击存储在nodeList中。比较索引时,我注意到它始终以'='返回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');
   }
}

无论是“是”还是“否”,我的游戏都无法快速进行。有任何想法吗? (我尝试遍历nodeList但没有运气。。。)

2 个答案:

答案 0 :(得分:0)

  

它总是以'='返回

=是一项分配,而不是比较。

  

,如果为'=='或'===',则为false。

那是因为您要比较的值不同。

let a = 1;

console.log(a);
console.log(a === 1);
console.log(a === 2);
console.log(a = 2);
console.log(a);

答案 1 :(得分:0)

  

我注意到它总是以'='返回true,以'=='或'==='返回false

这是因为=将把您的项目分配给右侧的值。然后,在if语句中,它将执行通用的“是否存在此项”检查。如果右侧为truthy,则总是如此。

=====是比较。