为什么我的最后一个 AND 条件在 if 语句中返回 false



>我有一个数组如下:

var temp = ["5","5","5","5"];

这是 If 条件:

if((temp[0] == temp[1]) && (temp[1] == temp[2]) && (temp[2] == temp[3])){
square++;
}

为什么我的最后一个条件temp[2] == temp[3]返回false

当我在控制台中检查这两个索引的值时,它们显示相等,但条件本身返回false

有什么想法吗?

您的代码正在正常工作。但是,要检查数组中的所有元素是否相等,只需使用 .each

var temp = ["5","5","5","5"];
if (temp.every((e,i,arr) => e === arr[0])) {
	alert("all the same");
}

或使用 es6 套装

var temp = ["5","5","5","5"];
if (new Set(temp).size === 1) alert("all the same");

如果temp[3]不存在,它可以返回 false。因此,如果您说数组是动态生成的,则有可能正在检查最后一个值是否等于不存在的值。

我的意思是,如果您的array.length = 4和您正在手动测试是否temp[3] == temp[4]

还要检查NaN的值,因为NaN == NaN返回false

最新更新