当前位置: 代码迷 >> JavaScript >> 是否按定义的顺序处理Javascript数组的元素?
  详细解决方案

是否按定义的顺序处理Javascript数组的元素?

热度:39   发布时间:2023-06-05 09:32:13.0

例如:

var a = [];
function p(x) { a.push(x); }

[[p(1),p(2)],p(3),[p(4),[p(5)]],p(6)]

a == [1,2,3,4,5,6] // Always true?

是'a == [1,2,3,4,5,6]'定义的行为? 它可以依靠吗?

是否按定义的顺序处理Javascript数组的元素?

对,他们是。

是'a == [1,2,3,4,5,6]'定义的行为? 它可以依靠吗?

不,equals运算符在比较对象时执行引用相等。

简短回答:“是的”。

更长的答案:你的问题实际上是关于JavaScript语句而不是数组。 您发布的代码( [[p(1),p(2)],p(3),[p(4),[p(5)]],p(6)] )不是数组,它是一个语句,它返回一个Array,同时也填充一个Array。 JavaScript语句根据的规则执行。

你的问题不是很清楚,“处理”是什么意思?

var a = [];

这是一个数组文字,它将对空数组的引用赋给a。

function p(x) { a.push(x); }

每次调用push()时,都会在a索引a.length处添加一个新元素(即它总是在最高索引之后添加)。

[[p(1),p(2)],p(3),[p(4),[p(5)]],p(6)]

这是一个数组文字,相当于:

a = [];
a[0] = [p(1),p(2)];
a[1] = p(3);
a[2] = [p(4),[p(5)]];
a[3] = p(6);

以下表达式:

a == [1,2,3,4,5,6]

总是假的,因为数组是对象,对象永远不会等于任何其他对象。 你可以做:

var a = [0, 1];
var b = a;
a == b; // true since a and b reference the same array

但

var a = [0, 1];
var b = [0, 1];
a == b; // false since a and b reference different arrays
  相关解决方案