在那里,发生了一件奇怪的事情......
通常我会像这样分配我的全局变量:
orders = [];
pOrders = [];
但我很懒,只是写道:
orders = pOrders = [];
它应该是一样的,不应该吗??
显然不是因为数组pOrder
也包含数组orders
数据。我坐了15分钟寻找我的代码中的错误,但找不到任何错误,所以我只是尝试按照通常的方式编写变量并且它有效。为什么会这样?
在PHP中,逻辑是相同的,但JavaScript似乎表现不同。
请任何人向我提供一些信息或知识..
答案 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”]。