前端面试八股文每日一题——JavaScript
对象类型和原始类型的不同之处,函数传参是对象会发生什么问题?
答:在JS中,除了原始类型外其他都是对象类型。
对象类型和原始类型不同的是,原始类型在栈中存储的是值本身,对象类型在栈中存储的是地址/指针(而值存储在堆中)。
当我们创建了一个对象类型之后,计算机就会在内存的堆中开辟一个空间来存放值,然后再把这个空间的地址/指针存储在栈中。
比如const a = 1;,那么a中存储的就是值1。
比如const b = [];,那么b中存储的就是内存地址#001,在地址#001的位置中又存放了值[]。
当对象作为函数的实参传入时,实际上是把地址传递给了函数中的变量,所以当我们在函数中对同一个地址的数据进行修改时,就会影响到两个变量的值。