我首先创建一个字符列表,然后将其中两个保存为取决于用户输入的字符串。我不确定问题出在哪里,所以我在此处复制了完整的代码https://jsfiddle.net/mboguslaw97/6w6xj1f3/3/。左上方的卡和下方的2均为'L'。单击那些卡片后的另一张卡片以激活警报语句。

var letters = 'ABCDEFGHIJKL'.repeat(2).split('');
user_input = 11;
cards_flipped.push(user_input);
user_input = 23;
cards_flipped.push(user_input);
letter1 = letters[cards_flipped[0]];
letter2 = letters[cards_flipped[1]];

alert(letter1 == 'L');
alert(letter2 == 'L');
alert(letter1 == letter2)
//Alerts true, true, false


有人可以向我解释如何检测字符串是否相等以及为什么不能通过这种方式比较字符串吗?

最佳答案

console.log(typeof letter1, letter1 instanceof Array);
object true


letter1和letter2都是单值数组。它们中的任何一个“等于”字母“ L”的唯一原因是由于类型转换:与字符串文字进行比较时,正在数组上调用toString()方法。如果比较letter1.toString() == letter2.toString()letter1[0] == letter2[0],它们将相等。我更新了fiddle

干杯。

09-15 19:23