传参时是传值(复制值)给形参
首先,定义了一个函数let add = (a,b)=> a+b。
- 那么我们调用这个函数
add(1,2)的时候,我们会传参,也就是把实参1和2传给(复制给)形参a和b。 - 因为我们的实参1和2就是数据类型中的数值,所以传参后形参a和b的值也就是数据类型中的数值,所以形参a和b将会被存在stack栈里,形参a=1,b=2。就是单纯的等于一个数字!
传参时是传址(复制地址)给形参
其次,我们在定义一个函数let add = (array,a)=> array.push(a)
-
那么我们调用这个函数
add([1,2],3)的时候,我们会传参,也就是把实参[1,2]和3传给(复制给)形参array和a。 -
因为我们的实参
[1,2]和3一个是数据类型中的对象的数组,一个是数组,所以传参后形参array和a也就是数组和数值。数组的话实在stack栈里保存一个地址,这个地址就是实参[1,2]的地址啊!所以形参array和实参[1,2]是同一块内存啊 -
所以,调用函数后,就会传参,然后你往
array里面push新东西,也就是往[1,2]里push新东西!