js关于函数参数和实参是什么关系?-灵析社区

我爱了你呢

今天偶然被朋友问到一个问题,推翻了自己以往的认知。 const a= [1,2,3]; function test(x){ console.log(x===a)// 控制台输出 true x=[2,3,4] console.log(a); // 依旧为[1,2,3] console.log(x); //变为[2,3,4] }; test(a); **问题:** 1. 为什么变量 a 没有被更改为 [2,3,4]呢? 2. 函数在执行的时候 形参 x 和实参 a 是什么关系呢?

阅读量:156

点赞量:0

问AI
形参大概可以认为是拷贝了实参的值或者引用地址。这里x作为函数test的形参,在执行时,因为a是一个数组,所以x拷贝的是a的引用。 在第一个log中,控制台输出true,是因为此时x和a指向的是同一个地址;然后你通过重新赋值改变了x的指向,此时a仍然指向的是原地址,所以会有后面两个不同的打印结果。