4

在那里,刚刚发生了一件奇怪的事情。

通常我像这样分配我的全局变量:

orders = [];
pOrders = [];

但我很懒,只是写道:

orders = pOrders = [];

应该是一样的意思吧??

显然不是因为数组pOrder还包含数组orders数据。我坐了 15 分钟在我的代码中寻找错误,但找不到任何错误,所以我只是尝试像往常一样编写变量并且它起作用了。为什么会这样?

在 PHP 中,逻辑是相同的,但 JavaScript 的行为似乎不同。

请任何人都可以向我提供一些信息或知识..

4

4 回答 4

7

在第二个示例中,您将完全相同的数组实例显式分配给两个单独的变量。只涉及一个数组,而在第一种情况下有两个。

如果得知 PHP 真的会将这两段代码视为同一个意思,我会感到有些惊讶。

于 2013-08-23T13:55:36.197 回答
5

您最后在那里编写的代码与以下代码相同:

orders = [];
pOrders = orders;

所以现在你有两个变量是对同一个数组的引用。这就是为什么你正在经历这种行为。

相反,当您像在第一个示例中那样做时:

orders = [];
pOrders = [];

然后你有两个完全独立且不同的数组。

于 2013-08-23T13:56:21.613 回答
2

您分配了两个变量来引用同一个数组实例。

于 2013-08-23T13:56:24.047 回答
1

要了解每个人所说的“相同数组实例”是什么意思,请在浏览器中运行以下 JavaScript:

orders = pOrders = [];
orders.push("hello");
pOrders.push("world");
console.log(orders);
console.log(pOrders);

检查控制台输出,两条消息都会显示 ["hello", "world"]。

于 2013-08-23T13:59:42.403 回答