我正在研究“匹配纸牌游戏”,并将选定的纸牌或点击存储在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但没有运气。。。)
答案 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
,则总是如此。
==
和===
是比较。