Javascript变量初始化

时间:2013-08-23 13:54:37

标签: php javascript

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

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

orders = [];
pOrders = [];

但我很懒,只是写道:

orders = pOrders = [];

它应该是一样的,不应该吗??

显然不是因为数组pOrder也包含数组orders数据。我坐了15分钟寻找我的代码中的错误,但找不到任何错误,所以我只是尝试按照通常的方式编写变量并且它有效。为什么会这样?

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

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

4 个答案:

答案 0 :(得分:7)

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

我会有点惊讶地发现PHP确实会将这两段代码视为同样的事情。

答案 1 :(得分:5)

你最后写的代码与:

相同
orders = [];
pOrders = orders;

所以现在你有两个变量是对同一个数组的引用。这就是你为什么会遇到这种行为的原因。

而是按照第一个例子中的说法进行操作:

orders = [];
pOrders = [];

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

答案 2 :(得分:2)

您已分配两个变量以引用相同数组实例。

答案 3 :(得分:1)

要查看“相同数组实例”对每个人的意义,请在浏览器中运行以下JavaScript:

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

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