JavaScript中相内容的数组为何不相等?
在JavaScript中,一个有趣但常令人困惑的现象是:**即使两个数组包含完全相同内容,它们也不会被认为是相等的。**比如:
const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];
console.log(arr1 === arr2); // false
console.log(arr1 == arr2); // false
为啥会这样呢?是不是很奇怪?
这是因为JavaScript在比较对象(包括数组)时,比较的是引用(内存地址)而不是内容。即使两个数组的内容完全相同,只要它们是不同的实例,就会被认为是不相等的。明白了吧!
那么如何正确比较数组呢?
其实,要比较数组的内容是否相同,需要我们手动遍历比较每个元素:
function arraysEqual(arr1, arr2) {
if (arr1.length !== arr2.length) return false;
for (let i = 0; i < arr1.length; i++) {
if (arr1[i] !== arr2[i]) return false;
}
return true;
}
console.log(arraysEqual(arr1, arr2)); // true
题外话:在JS开发过程中,我们需要关注代码的安全性。特别是在前端领域,JS代码直接暴露在浏览器中,容易被分析、复制、盗用。为了避免这种情况,我们使用JShaman这样的专业混淆加密工具,对JS代码进行混淆加密。

被折叠的 条评论
为什么被折叠?



