PHP代码:<?php$key = [1,2];function add($key){
array_push($key,'dddss');
print_r($key);
}
add($key);
print_r($key);输出Array
(
[0] => 1
[1] => 2
[2] => dddss
)
Array
(
[0] => 1
[1] => 2)JS代码:var $key = [1,2];
function addkey($key){ let hello = $key;
hello.push(9)
console.log(hello)
console.log($key)
}
addkey($key)
console.log($key)输出:[ 1, 2, 9 ]
[ 1, 2, 9 ]
[ 1, 2, 9 ]我想要的是函数内的处理不影响函数外,也就是类似于PHP的结果,也想知道什么原因
1 回答
慕仙森
TA贡献1827条经验 获得超7个赞
let hello = $key.slice();
你的函数参数是一个数组,而数组在js中是按照引用来传递的。。你在函数内部使用let 将一个数组的引用赋值给另一个变量的时候。实际上,hello和$key都同时指向了一个值,在这里就是length为2的数组。所以你对任何一个变量做push或者其他操作的时候,改变的其实是两个变量同时指向的那个值。
添加回答
举报
0/150
提交
取消