欢迎光临散文网 会员登陆 & 注册

前端面试八股文每日一题——JavaScript

2022-07-27 23:32 作者:朵宝特工007  | 我要投稿

对象类型和原始类型的不同之处,函数传参是对象会发生什么问题?

答:在JS中,除了原始类型外其他都是对象类型。

对象类型和原始类型不同的是,原始类型在栈中存储的是值本身,对象类型在栈中存储的是地址/指针(而值存储在堆中)。

当我们创建了一个对象类型之后,计算机就会在内存的堆中开辟一个空间来存放值,然后再把这个空间的地址/指针存储在栈中。

  • 比如const a = 1;,那么a中存储的就是值1。

  • 比如const b = [];,那么b中存储的就是内存地址#001,在地址#001的位置中又存放了值[]。

当对象作为函数的实参传入时,实际上是把地址传递给了函数中的变量,所以当我们在函数中对同一个地址的数据进行修改时,就会影响到两个变量的值。


前端面试八股文每日一题——JavaScript的评论 (共 条)

分享到微博请遵守国家法律